AbortController未终止获取请求

问题描述 投票:0回答:1

我正在尝试创建一个辅助函数,以在2000毫秒后自动使fetch请求超时。以下代码不会中止获取请求,而是在4000毫秒后正常打印请求。该代码似乎在浏览器中有效,但在节点中无效。

require('isomorphic-fetch');
const AbortController = require('abort-controller');

const fetchTimeout = async url => {
  const controller = new AbortController();

  setTimeout(() => {
    controller.abort();
  }, 2000);

  return fetch(url, { signal: controller.signal })
    .then(response => {
      return response;
    })
    .catch(error => {
      throw new Error(error.message);
    });
};

const getStock = async () => {
  return await fetchTimeout('https://httpbin.org/delay/4').then(data =>
    data.json()
  );
};

( async () => 
console.log(await getStock())
)();
javascript node.js timeout es6-promise fetch-api
1个回答
0
投票

我能够通过使用节点获取库而不是同构获取来解决此问题,而没有其他实现问题。我已经记录了一张票here,希望这可以帮助遇到这个令人沮丧的问题的其他人。

© www.soinside.com 2019 - 2024. All rights reserved.