如何在for..of中添加等待时间?

时间:2019-05-07 13:59:36

标签: javascript

我正在构建一个代码,该代码使我能够等待一个承诺被解决以继续到下一个,我还要为每个等待添加一个单独的时间,但是如果我删除了等待,则仅打印第一个循环秒,效果很好。

在播放代码中出现此错误,在其他编辑器中,我只是打印了第一个循环

error: Infinity loop on line 8, char 6. You can increase loop timeout in settings.

https://playcode.io/309050?tabs=console&script.js&output

如果代码可以工作,请在stackoverflow代码编辑器中使用,但是在我的项目或其他代码编辑器中,则不能使用

 const urls = [
      'https://jsonplaceholder.typicode.com/todos/1',
      'https://jsonplaceholder.typicode.com/todos/2',
      'https://jsonplaceholder.typicode.com/todos/3'
    ];
    
    async function getTodos() {
      for (const [idx, url] of urls.entries()) {
        const todo = await fetch(url);
        console.log(`Received Todo ${idx+1}:`, todo);
         await wait(1000)
      }
    
      console.log('Finished!');
    }
    
    getTodos();
    
    function wait(ms) {
      return new Promise(r => setTimeout(r, ms));
    }

1 个答案:

答案 0 :(得分:2)

某些在线代码游乐场like CodePen具有内置的无限循环检测功能。这是为了防止在临时编码时意外编写无限循环的情况下冻结UI。这通常是通过静态分析代码来实现的。因此,它无法告诉您代码在运行时实际执行的操作(并且可能根本不是无限的)。他们能做的最好的就是基于结构的猜测。

在您的情况下,您的代码编辑器认为您正在执行无限循环。您的编辑器中可能有一些设置可以禁用它。