延迟javascript循环中的延迟
我有一个循环已经有了这样的延迟延迟javascript循环中的延迟,javascript,node.js,loops,delay,Javascript,Node.js,Loops,Delay,我有一个循环已经有了这样的延迟 for (var i = 0; i < 100; i++) { setTimeout( function (i) { console.log("Hai") }, 1000*i, i); } 这可能吗?const timeout=ms=>新承诺(res=>setTimeout(res,ms)) const timeout = ms => new Promise(res => setTimeout(res, ms))
for (var i = 0; i < 100; i++) {
setTimeout( function (i) {
console.log("Hai")
}, 1000*i, i);
}
这可能吗?const timeout=ms=>新承诺(res=>setTimeout(res,ms))
const timeout = ms => new Promise(res => setTimeout(res, ms))
async function sayHai() {
for (var i = 0; i < 100; i++) {
await timeout(1000);
console.log("Hai");
if ( (i%5) == 4 ) await timeout(30000);
}
}
异步函数sayHai(){
对于(变量i=0;i<100;i++){
等待超时(1000);
控制台日志(“Hai”);
如果((i%5)==4)等待超时(30000);
}
}
最简单的方法,没有承诺
let i = 1
function timeout(){
i++
setTimeout(()=>{
console.log("Hai")
timeout()
},i % 5 === 0 ? 30000 : 1000)
}
timeout()
这是一种非常糟糕的方法,您应该使用一个计数器,而不是运行100个实例。请参见setInterval()
i>=5?30000+1000*i:1000*i
我每5次需要一次而不是前5次问题和你的答案之间有关系吗?@GerardH.Pille什么?编辑后,情况好多了。但是OP要求每5次迭代额外暂停30秒。您将1秒的暂停替换为30秒的暂停,这不是所要求的。此外,当OP在100次迭代后停止时,您从未停止过,而且您的代码甚至无法工作。您忘记调用sayHai()
,即使在调用它时,在第一个控制台后仍有30秒的延迟。log
已更正。但是sayHai可能会在需要的时候被呼叫。如果同步呢,因为这是为控制台设计的,所以我需要syncronus顺序删除“async”?
let i = 1
function timeout(){
i++
setTimeout(()=>{
console.log("Hai")
timeout()
},i % 5 === 0 ? 30000 : 1000)
}
timeout()