---

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

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部