我有一个巨大的嵌套for循环,需要在嵌套循环
或else block
的每次迭代中每隔1秒休眠一次。这通常使用如下代码执行:
for (let i=1; i<10; i++) {
setTimeout( function timer(){
alert("hello world");
}, i*3000 );
}
我读到的这篇文章太占用内存,不应该使用它。
这是我到目前为止的代码:
for (var i = 0; i < this.data.length; i++) {
if (this.data[i].dataTypes.length > 0) {
for (var j = 0; this.data[i].dataTypes.length; j++) {
//performed each second
this.setData(this.data[i].dataName, this.data[i].dataTypes[j]);
}
} else {
//performed each second
this.setData(this.data[i].dataName, "");
}
}
我应该如何重写它,以便嵌套循环或其他 block 每秒执行一次?
最佳答案
如果你不喜欢 for 循环,你可以这样做
function sleep(n){
return new Promise(res => setTimeout(res, n));
}
async function doStuff(){
for(let element of myList){
doMoreStuff();
await sleep(1000);
}
}
https://jsfiddle.net/DerekL/y7m0qv51/
或
function doStuff(i){
doMoreStuff(myList[i]);
setTimeout(() => doStuff(i + 1), 1000);
}
https://jsfiddle.net/DerekL/rh8m6h94/
但您应该意识到,这些都不被认为更有效。
关于javascript - for 循环,迭代之间有 sleep ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47623926/