---

title: "AbortSignal.timeout 与 AbortSignal.any:稳健中断控制"

keywords:

  • AbortController
  • AbortSignal.timeout
  • AbortSignal.any
  • 请求超时
  • 组合中断

description: "说明现代 AbortSignal 的扩展:timeout() 创建超时信号,any() 组合多个信号,提升 fetch/任务的稳健中断控制,提供示例与工程建议。"

categories:

  • 文章资讯
  • 技术教程

---

概述

AbortSignal.timeout(ms) 创建在指定时间后自动触发的中断信号;AbortSignal.any([...]) 将多个信号组合,任意一个触发即中断。适用于请求超时与用户取消等情境。

示例

const ctrl = new AbortController()
const signal = AbortSignal.any([ctrl.signal, AbortSignal.timeout(5000)])
try {
  const resp = await fetch('/api', { signal })
} catch (e) { /* 处理超时或取消 */ }
// 用户取消
ctrl.abort()

工程建议

  • 时序与重试:合理设置超时并在必要时重试;避免过短导致失败率上升。
  • 组合场景:结合页面卸载、用户交互取消与后台策略;统一中断通道。
  • 兼容:特性检测并回退到手动计时器与 ctrl.abort();记录原因。

参考与验证

  • MDN AbortController/AbortSignal 文档:https://developer.mozilla.org/docs/Web/API/AbortController
  • web.dev 请求中断与超时指南:https://web.dev/articles/abort

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部