写小脚本请求接口时,只想简单限制一下等待时间,不一定要自己手搓 AbortController 和 setTimeout。
环境:Node.js 18+,保存成 fetch-timeout-demo.mjs:
const url = 'https://example.com'
try {
const res = await fetch(url, {
signal: AbortSignal.timeout(1000),
})
console.log(res.status)
console.log((await res.text()).slice(0, 40))
} catch (err) {
if (err.name === 'TimeoutError') {
console.log('请求超时了')
} else {
throw err
}
}
跑:
node fetch-timeout-demo.mjs
这个适合本地工具、一次性脚本这种轻场景。要是项目里已经有统一的 HTTP client,还是放到那层一起处理超时、重试和日志更顺。