---
title: AbortSignal timeout 与 any:中止组合与超时治理
keywords:
- AbortSignal.timeout
- AbortSignal.any
- 超时
- 中止组合
- 稳定性
description: 使用 AbortSignal.timeout 与 AbortSignal.any 为请求与任务提供易用的超时与组合中止机制,统一治理策略与资源释放。
categories:
- 文章资讯
- 技术教程
---
概述
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

发表评论 取消回复