Javascript forEach() で setTimeout が効かない時

  • Javascript

setTimeout()で処理を停止することができますが、ループ内でそのまま突っ込んでもほぼ同時に実行します。

array.forEach((value, index) => {
  setTimeout(() => {
    console.log('5秒ごとに実行')
  }, 5000);
});

これだとforEach()が一気に回る -> 全てのコードを5秒後に実行するだけです。

index 番号を使う

forEach()のコールバックの第二引数はループしている要素のインデックス番号が渡されるので、その分をsetTimeout()の第二引数に掛け合わせれば、0秒、5秒、10秒…後に実行されます。

array.forEach((value, index) => {
  setTimeout(() => {
    console.log('5秒ごとに実行')
  }, 5000 * index);
});