如何运行相同的JS函数多次,直到前一个已经完成?



我有一个函数,我需要运行多次,但要等到前一个函数完成。

目前我拥有的是:

for(var x = 0; x < rollsArr.length; x++){
rollDice(data.results, x)
}
function rollSkins(results, rollN) {
// do some stuff
setTimeout(function() {
roll(results, rollN)
}, 500);
}
function roll(results, rollN) {
// do some stuff
setTimeout(function() {
// do some stuff
}, 8500);
}

我想要一个滚动函数完成,然后等待几秒钟,然后开始另一个滚动。我试着等待rollDice,但我没有正确实现它或它没有工作。

这个问题的解决方案是什么?

您可以使用async/await或Promise.then()。参考:https://zellwk.com/blog/async-await-in-loops/

const rollsArr = [1,2,3];
const data = {results: "example"};
const sleep = ms => {
return new Promise(resolve => setTimeout(resolve, ms))
}
(async () => {
for (var x = 0; x < rollsArr.length; x++){
await rollDice(data.results, x)
}
})()
async function rollDice(results, rollN) {
// do some stuff
await sleep(500);
await roll(results, rollN);
}
async function roll(results, rollN) {
// do some stuff
console.log("Rolling dice");
await sleep(1000);
console.log("Doing stuff");
}

相关内容

最新更新