在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中的秒数后退出获取尝试[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何按预定义的秒数终止异步任务请求[重复]

获取从日期到月底 PHP 的秒数

如何从 gmtime() 的时间 + 日期输出中获取纪元以来的秒数?

如何在中断程序之前计算一定的秒数[重复]

javascript 字符串“00:00:00”格式的秒数

如何在Python中获取自特定时间以来的秒数