如何多次 运行 同一个 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");
}