在JavaScript中的秒数后退出获取尝试[重复]
Posted
技术标签:
【中文标题】在JavaScript中的秒数后退出获取尝试[重复]【英文标题】:Quit fetch attempt after number of seconds in JavaScript [duplicate] 【发布时间】:2021-11-20 21:14:51 【问题描述】:我正在努力思考解决这个问题的最佳方法。最终,如果 fetch 在 5 秒左右内不起作用,我会尝试将其设置为重定向。到目前为止,我想出了这个粗略的尝试。想法?
const fetchData = fetch('https://swapi.devs/api/films').then(response=>response.json());
const timer= new Promise((resolve) => setTimeout(resolve, 5000, -1));
function init()
const promises = [fetchData, timer];
Promise.any(promises).then(value =>
if (!value)
console.log('I got negative 1');
// eventually do window.location.href = "https://www.example.com";
else
console.log(value);
);
init();
【问题讨论】:
【参考方案1】:您可以创建一个https://developer.mozilla.org/en-US/docs/Web/API/AbortController 并在每个获取参数中传递它的信号,然后使用 setTimeout 中止它。
对于一个单一的承诺,它看起来像:
const controller = new AbortController();
const fetchResult = await fetch(fetchURL, signal: controller.signal );
setTimeout(() => controller.abort(), timeoutDuration);
当然,您需要将其包装在 try/catch
中,并对其进行更新以与 Promise.all 一起使用
【讨论】:
以上是关于在JavaScript中的秒数后退出获取尝试[重复]的主要内容,如果未能解决你的问题,请参考以下文章