延迟延迟 javascript 循环
delay in delay javascript looping
我有一个已经有这样延迟的循环
for (var i = 0; i < 100; i++) {
setTimeout( function (i) {
console.log("Hai")
}, 1000*i, i);
}
如果使用上面的代码,它将执行 1 秒暂停重复 100 次
这里我想再添加一个延迟,如果它达到 5 次,它将暂停更长时间,例如 30 秒,然后在延迟之前再次继续
示例:
Hai .. delay 1 second
Hai .. delay 1 second
Hai .. delay 1 second
Hai .. delay 1 second
Hai .. delay 1 second
delay 30 second
Hai .. delay 1 second
Hai .. delay 1 second
Hai .. delay 1 second
Hai .. delay 1 second
Hai .. delay 1 second
这可能吗?
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);
}
}
最简单的方法,无需承诺。
let i = 1
function timeout(){
i++
setTimeout(()=>{
console.log("Hai")
timeout()
},i % 5 === 0 ? 30000 : 1000)
}
timeout()
我有一个已经有这样延迟的循环
for (var i = 0; i < 100; i++) {
setTimeout( function (i) {
console.log("Hai")
}, 1000*i, i);
}
如果使用上面的代码,它将执行 1 秒暂停重复 100 次
这里我想再添加一个延迟,如果它达到 5 次,它将暂停更长时间,例如 30 秒,然后在延迟之前再次继续
示例:
Hai .. delay 1 second
Hai .. delay 1 second
Hai .. delay 1 second
Hai .. delay 1 second
Hai .. delay 1 second
delay 30 second
Hai .. delay 1 second
Hai .. delay 1 second
Hai .. delay 1 second
Hai .. delay 1 second
Hai .. delay 1 second
这可能吗?
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);
}
}
最简单的方法,无需承诺。
let i = 1
function timeout(){
i++
setTimeout(()=>{
console.log("Hai")
timeout()
},i % 5 === 0 ? 30000 : 1000)
}
timeout()