【发布时间】:2019-10-14 13:59:37
【问题描述】:
我在下面有一个带有点击功能的按钮。它有 3 个嵌套的 for 循环和 1 个 setTimeout 函数。
以下循环循环了 5 次。我希望下面的代码可以工作(5x5)总共 25 秒的执行时间,并且每 5 秒的控制台输出应该被“等待”打印。
但是下面的代码只工作 5 秒,并立即打印“5 hello”。在不改变我的 for 循环结构的情况下,我怎样才能让它按我的意愿工作?
jQuery("#btn_trendyolStocksSYNC").click(function() {
for(var product in all){
var colors = all[product];
for(var singleColor in colors[0]){
var size = colors[0][singleColor];
for(var index in size){
var singleSize = size[index];
setTimeout(function (){
console.log('Waited');
}, 5000);
}
}
}
});
编辑:我不使用带索引的 for 循环,因此数字索引 for 循环的解决方案对我不起作用。
【问题讨论】:
-
您的所有计时器实际上都是立即设置并同时执行的。您可能会使用
await和Promise,或者使用嵌套函数来调用定时器的下一次迭代。 -
@Ivar for 循环类型不相似。我也看到了这个问题,但没有帮助
标签: javascript asynchronous settimeout