配列のPromiseを直列で実行する方法

に公開1

Discussion

standard softwarestandard software

次のように書いても、
300ms waited.
100ms waited.
200ms waited.
500ms waited.
400ms waited.
の順番で動作しました。
いろんな書き方ができるみたいです。

(async () => {
  await (async () => {
    for (const waitTime of waitTimes) {
      await wait(waitTime);
    }
  })();

  await (() => {
    let i = 0;
    const runThen = (p) => {
      if (waitTimes.length <= i) { return; }
      i += 1;
      p.then(() => runThen(wait(waitTimes[i])));
    }
    runThen(wait(waitTimes[0]));
  })();
})();