TL;DR 配列に突っ込んでreduceすると簡単に直列処理が書けて、さらに処理開始をコントロールできてうれしい reduceした後に配列に処理が増えると、後から増えた分は実行されない 処理が順次増えるときは配列に入れるのではなくthenメソッドでさっさと繋ぐといい Async Functionsはよ この記事は最低限のPromiseへの理解を要します。 Promiseを返す関数の直列実行には本来Promise.prototype.thenを使えばよい。 function f(wait) { return new Promise((resolve) => { setTimeout(() => { console.log(wait); resolve(wait * 2); }, wait); }); }; Promise.resolve(100) .then(f) .then(f) .the