AbortController是JavaScript中的一个全局类,主要用于中止任何类型的操作,包括网络请求、事件监听器、定时器等。它通过提供一个signal
对象来响应中止事件,并通过调用abort()
方法来触发中止操作。
基本用法和功能
- 创建AbortController实例:通过
new AbortController()
创建一个控制器实例。 - 获取signal对象:通过
controller.signal
获取一个AbortSignal
对象,该对象可以传递给需要中止的API(如fetch请求)。 - 中止操作:调用
controller.abort()
方法会触发与该控制器关联的所有操作的中止。
常见使用场景
- 网络请求:在发起fetch请求时,可以将
AbortController
的signal
对象作为fetch选项的第二个参数,从而可以在需要时通过调用abort()
方法来取消请求。 - 事件监听器:在添加事件监听器时,可以将
signal
对象作为选项传递给addEventListener
,这样当调用abort()
方法时,所有绑定到该信号的事件监听器都会被触发中止事件。 - 定时器和间隔调用:在设置定时器或间隔调用时,可以将
signal
对象传递给相关函数,从而可以在需要时通过调用abort()
方法来取消定时器或间隔调用。
示例代码
const controller = new AbortController();
const signal = controller.signal; // 添加事件监听器
window.addEventListener('resize', () => { console.log('处理resize事件'); }, { signal });
window.addEventListener('storage', () => { console.log('处理storage事件'); }, { signal }); // 清理时只需调用abort方法 controller.abort();
在这个示例中,我们创建了一个AbortController
实例,并将其signal
对象绑定到窗口的resize和storage事件上。当调用abort()
方法时,这两个事件的处理函数都会被触发中止事件。
(此文章由AI生成)