非同期処理を並列実行するときに便利な Promise.all() ですが、雑に使ってしまうと意図した挙動にならないことがあります。 まとめ Promise.all 内で関数を定義する際は即時実行関数式にしなければ実行されない Promise.all に渡す際に await してしまうと意図せず直列処理になってしまう サンプルコード 以下のコードで例示した1・2・3・4のうち、期待した挙動にならないものがあります。 (いずれの実行もエラーにならないものとします) let response; const syncFn = () => {}; const asyncFn = async () => {}; const results = await Promise.all([ // 1 syncFn(), // 2 asyncFn(), // 3 async () => { const data