记录一下,今天学到的基于AbortController移除事件监听。
EventTarget.removeEventListener()
把当初绑定事件的回调函数引用传给removeEventListener就可以移除事件监听。
这应该是最常见的处理方式了,缺点我觉得有两个:
addEventListener 注意看第三个参数options对象的signal,该属性接受AbortSignal。当AbortSignal.abort()方法调用时,监听器会被移除。
const controller = new AbortController();
window.addEventListener('resize', listener, { signal: controller.signal });
controller.abort();
const controller = new AbortController();
const signal = controller.signal;
downloadBtn.addEventListener("click", fetchVideo);
abortBtn.addEventListener("click", () => {
controller.abort();
console.log("Download aborted");
});