javascript 原生 promise 不支持自动取消,必须借助 abortcontroller 或手动封装来实现。核心做法是创建一个 abortsignal 监听器,在触发取消时通过 throw 中断 promise 链,或在异步循环中检查信号状态以提前退出。

AbortController 如何中断 Fetch 请求
使用 AbortController 可以中断基于网络 I/O 的异步操作。调用 controller.abort() 会向关联的 signal 发送信号,导致正在进行的 fetch 调用抛出 DOMException,从而终止后续处理。

const controller = new AbortController();
const signal = controller.signal;
// 启动异步任务
const task = fetch('https://api.example.com/data', { signal })
.then(response => response.json())
.catch(error => {
if (error.name === 'AbortError') {
console.log('Fetch cancelled');
} else {
console.error('Fetch failed:', error);
}
});
// 执行取消
controller.abort();预期结果:控制台输出


















