全部:
我有一个循环,其中有一个超时,试图在动画和声音结束之前暂停并进行迭代,然后再继续进行下一个迭代。我发现当我遇到超时匿名函数并导致无限循环时,我没有增加。这是代码:
var i = 0;
while (i < gamePattern.length - 1) {
console.log(i);
buttonAnimation(gamePattern[i]);
buttonSound(gamePattern[i]);
setTimeout(() => {
i++;
}, 400);
}
我当时正在考虑尝试使用Promise进行设置,但是我不认为这实际上会像我一样暂停迭代。任何想法都将不胜感激。
谢谢
凯文
答案 0 :(得分:0)
始终使用let,const。 var很旧,容易出错。
将async / await与promises配合使用,您可以实现两次迭代之间的代码等待时间
const wait = (cb, time) => {
return new Promise(res => {
setTimeout(() => {
cb();
res();
}, time)
})
}
async function doSomeThing(){
let i = 0;
while(i < gamePattern.length-1){
console.log(i);
buttonAnimation(gamePattern[i]);
buttonSound(gamePattern[i]);
await wait(() => {i++;}, 400)
}
}
doSomeThing()