Javascript 暂停循环并等待事件,然后再移动到下一个迭代
全部: 我有一个循环,在循环中我有一个超时来尝试暂停一个迭代,而动画和声音在进入下一个迭代之前完成;我发现当它点击timeout匿名函数并导致无限循环时,我并没有增加。代码如下:Javascript 暂停循环并等待事件,然后再移动到下一个迭代,javascript,loops,Javascript,Loops,全部: 我有一个循环,在循环中我有一个超时来尝试暂停一个迭代,而动画和声音在进入下一个迭代之前完成;我发现当它点击timeout匿名函数并导致无限循环时,我并没有增加。代码如下: var i = 0; while (i < gamePattern.length - 1) { console.log(i); buttonAnimation(gamePattern[i]); buttonSound(gamePattern[i]); setTimeout(() => {
var i = 0;
while (i < gamePattern.length - 1) {
console.log(i);
buttonAnimation(gamePattern[i]);
buttonSound(gamePattern[i]);
setTimeout(() => {
i++;
}, 400);
}
var i=0;
而(i{
i++;
}, 400);
}
我想尝试用承诺来建立它,但我觉得这不会像我想的那样暂停迭代。任何想法或想法都将不胜感激
谢谢,
凯文总是用let,const。var很旧,而且容易出错 使用async/await with Promissions可以实现迭代之间的代码等待时间
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()
const wait=(cb,time)=>{
返回新承诺(res=>{
设置超时(()=>{
cb();
res();
},时间)
})
}
异步函数doSomeThing(){
设i=0;
而(i{i++;},400)
}
}
doSomeThing()
始终使用let,const。var很旧,而且容易出错
使用async/await with Promissions可以实现迭代之间的代码等待时间
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()
const wait=(cb,time)=>{
返回新承诺(res=>{
设置超时(()=>{
cb();
res();
},时间)
})
}
异步函数doSomeThing(){
设i=0;
而(i{i++;},400)
}
}
doSomeThing()
这是否回答了您的问题?处理这个问题有多种方法。straigthforward方法是对循环使用,对超时延迟使用类似于i*400的公式。这是否回答了您的问题?处理这个问题有多种方法。straigthforward方法是对
循环使用,并对超时延迟使用类似于i*400的公式代码>然后等待等待(400);i++代码>对于返回承诺的函数,不应该需要回调…为什么不干脆const wait=time=>new promise(resolve=>{setTimeout(resolve,time);})代码>然后等待等待(400);i++代码>对于返回承诺的函数,不应该需要回调。。。