除了第一个迭代之外,我想等待循环的每次迭代。这是我的代码,在setTimeout函数等待一些x秒后立即运行所有迭代而无需等待,第一次迭代正常工作。
这是代码
var requests_made = 0;
drivers.forEach(function(driver) {
if (requests_made == 0) {
createUser(data);
} else {
setTimeout(function () {
createUser(data);
},30000);
}
requests_made++;
});
答案 0 :(得分:5)
你的超时使用静态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++;
});

注意:强>
我使用了一组数字并减少了延迟值以用于测试目的。