我有以下代码:
const getData = async function () {
try {
const response = await fetch(`${API_URL}/cars`, {
signal: AbortSignal.timeout(5_000),
});
console.log(response);
} catch (err) {
console.log(err.name); //AbortError
console.dir(err);
}
};
getData();
Run Code Online (Sandbox Code Playgroud)
在这里,getData 用于fetch()从 API 端点检索数据,我将signalrequest 的属性设置为AbortSignal.timeout(5_000)以实现超时。
根据 MDN 文档,AbortSignal.timeout(TIME_IN_MS)将返回AbortSignal将在指定时间后自动中止。该信号会因TimeoutError超时或由于AbortError按下浏览器停止按钮、关闭选项卡(或某些其他内置“停止”操作)而中止。
我每次运行时得到的响应getData()都是AbortError消息The user aborted a request.,但从来没有TimeoutError,即使我将浏览器设置为减慢 3G 并将时间设置为 100 毫秒。我还尝试将服务器中的响应设置为 10 秒,前端设置为无限制,超时设置为 9000 毫秒。
为什么我没有得到TimeoutError而只是得到AbortError?
此问题似乎仅适用于基于 …