小编Aay*_*rna的帖子

获取请求中的 AbortSignal.timeout() 始终响应 AbortError 但不响应 TimeoutError

我有以下代码:

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

更新1:

此问题似乎仅适用于基于 …

javascript fetch

5
推荐指数
1
解决办法
2454
查看次数

标签 统计

fetch ×1

javascript ×1