javascript - 延迟循环nodejs的每次迭代

标签 javascript node.js asynchronous settimeout sleep

除了第一次之外,我想等待循环的每次迭代。这是我的代码,在 setTimeout 函数等待一些 x 秒并立即运行所有迭代后,第一次迭代运行良好,无需等待。

这是代码

var requests_made = 0;
drivers.forEach(function(driver) {
    if (requests_made == 0) {
        createUser(data);
    } else {
        setTimeout(function () {
            createUser(data);
        },30000);
    }
    requests_made++;
});

最佳答案

好吧,您的超时使用静态 delay 值,即 30000,它将被所有迭代使用,因此它们将在 30 秒后开始。

这个延迟应该是动态的并且随着迭代索引动态增加,这是你需要的:

var requests_made = 0;
var drivers = [10, 50, 30, 40, 50];
drivers.forEach(function(driver, index) {
  if (requests_made == 0) {
    //createUser(data);
    console.log(index);
  } else {
    setTimeout(function() {
      //createUser(data);
      console.log(index);
    }, 1000 * index);
  }
  requests_made++;
});

注意:

出于测试目的,我使用了一组数字并减少了延迟值。

关于javascript - 延迟循环nodejs的每次迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43763355/

相关文章:

javascript - Amcharts 如何在不重新加载整个图表的情况下将新图表数据推送到图表中?

javascript - mysql连接的模块导出

javascript - 如何从异步调用返回响应?

javascript - 是否可以控制获取哪些 Google map 脚本(JavaScript API)?

javascript - 访问html元素值javascript

node.js - Sequelize 查询多对多关系并访问对象

mysql - Node.js mysql 推送回调

node.js - 如何在nodejs中的文件中查找导入的文件?

angularjs - 从服务获取异步数据

ios - 从 Swift 函数中的异步调用返回数据