概述
AbortSignal.timeout(ms) 生成在指定毫秒后自动中止的信号;AbortSignal.any([...]) 合并多个信号,当任意一个触发时中止。
用法/示例
// 超时中止
await fetch('/api', { signal: AbortSignal.timeout(3000) })
// 组合中止:用户取消或超时均可中止
const controller = new AbortController()
const signal = AbortSignal.any([controller.signal, AbortSignal.timeout(5000)])
try { await fetch('/task', { signal }) } finally { /* 清理 */ }
工程建议
- 在统一封装中提供默认超时与可覆盖策略,避免悬挂请求。
- 为组合中止添加错误处理与回滚;记录中止原因用于观测。
- 对不支持环境回退到
AbortController与手动计时。
参考与验证
- MDN:AbortSignal — https://developer.mozilla.org/docs/Web/API/AbortSignal
- Chrome Docs:AbortSignal.timeout — https://developer.chrome.com/docs/web-platform/abort-signal

发表评论 取消回复