---
title: AbortController 中止治理:fetch 与流与任务
keywords:
- AbortController
- AbortSignal
- fetch 中止
- 超时
- 任务取消
description: 使用 AbortController/AbortSignal 为请求、流与任务提供统一的中止机制,结合超时与清理策略,提升稳定性与响应性。
categories:
- 文章资讯
- 游戏攻略
---
概述
AbortController 提供跨 API 的中止信号,常用于取消 fetch、流管线与自定义任务。合理的超时与清理策略能减少资源占用并避免僵挂。
用法/示例
// fetch 中止与超时
const ac = new AbortController()
const t = setTimeout(() => ac.abort(), 5000)
try {
const res = await fetch('/data', { signal: ac.signal })
clearTimeout(t)
} catch (e) { /* 处理 AbortError */ }
// 流管线中止
const controller = new AbortController()
const stream = new ReadableStream({
pull(ctrl) {
if (controller.signal.aborted) ctrl.close()
ctrl.enqueue(new Uint8Array([1]))
}
})
controller.abort()
工程建议
- 统一中止路径:为网络、计算与 UI 协作任务传递同一个信号。
- 提供超时与重试策略,并在中止后及时释放资源与状态。
- 对第三方库封装中止支持,避免无法取消的长任务。
参考与验证
- MDN:AbortController — https://developer.mozilla.org/docs/Web/API/AbortController
- MDN:AbortSignal — https://developer.mozilla.org/docs/Web/API/AbortSignal

发表评论 取消回复