【发布时间】:2020-02-21 10:21:30
【问题描述】:
我正在尝试创建一个辅助函数以在 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())
)();
【问题讨论】:
-
现在您在编辑后插入了
{ signal: controller.signal },代码工作正常。 -
@SebastianSimon 刚刚测试过,它似乎在浏览器中运行良好,但在我最新编辑的包中的 node.js 中却不行。
标签: javascript node.js timeout es6-promise fetch-api