如何多次 运行 同一个 JS 函数并等到前一个完成?
How to run the same JS function multiple times and wait until the previous has finished?
我有一个功能需要 运行 多次,但要等到上一个完成。
目前我拥有的是:
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");
}
我有一个功能需要 运行 多次,但要等到上一个完成。
目前我拥有的是:
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");
}