写脚本调接口时,最怕请求卡住半天不返回。Node 18+ 里 fetch 可以配 AbortSignal.timeout,小工具里够用了。
环境:Node.js 18+。保存成 fetch-timeout-demo.mjs:
const url = 'https://example.com'
try {
const res = await fetch(url, {
signal: AbortSignal.timeout(2000),
})
console.log(res.status)
console.log((await res.text()).slice(0, 80))
} catch (err) {
if (err.name === 'TimeoutError' || err.name === 'AbortError') {
console.log('request timeout')
} else {
throw err
}
}
跑一下:
node fetch-timeout-demo.mjs
这个适合一次性脚本、健康检查之类的场景。要是项目里已经有统一 HTTP 客户端,还是放到那层处理比较好。