一个简单的嵌套for循环示例:
for (let i=0; i<=2; i++) {
for (let j=0; j<=1; j++){
console.log("i is: " + i);
console.log("j is: " + j);
console.log("---");
}
}
延迟嵌套的for循环:
for (let i=0; i<=2; i++) {
for (let j=0; j<=1; j++){
task(i,j);
}
}
function task(i,j) {
setTimeout(function() {
console.log("i is: " + i);
console.log("j is: " + j);
console.log("---")
}, 1000 * i);
}
现在我的问题是
如何分别控制每个循环的延迟时间。
当前输出(忽略“---”):
i、j、delay、i、j、delay、...
期望输出(忽略“---”):
i、delay、j、delay、i、delay、j、delay、...
我尝试了以下方法(但它返回完全错误的输出):
for (let i=0; i<=2; i++) {
for (let j=0; j<=1; j++){
taski(i);
taskj(j)
}
}
function taski(i) {
setTimeout(function() {
console.log("i is: " + i);
}, 1000 * i);
}
function taskj(j){
setTimeout(function() {
console.log("j is: " + j);
}, 1000 * j);
}
setTimeout(…, 1000*(i*3+j))
。然而,我建议在async function
中使用带有 Promise 的await delay(1000)
,这样可以避免任何复杂的计算。参考链接:https://dev59.com/DHA65IYBdhLWcg3w4C0L#44476626 - Bergi