以下に、Node.jsでsetTimeoutを使用したwhileループの実装方法の例を示します。
let counter = 0;
function runLoop() {
// ループの終了条件を定義
if (counter >= 10) {
console.log("ループ終了");
return;
}
// 非同期処理を実行
setTimeout(() => {
console.log("カウンター:", counter);
counter++;
// 再びループを実行
runLoop();
}, 1000); // 1秒ごとに実行
}
// ループの開始
runLoop();
この例では、counter
という変数を使用して10回のループを行います。runLoop
関数内で、ループ終了条件をチェックし、終了条件に達した場合にループを終了させます。それ以外の場合は、setTimeout
を使用して1秒ごとに非同期処理を実行し、カウンターの値を表示し、カウンターをインクリメントします。その後、再びrunLoop
関数を呼び出してループを繰り返します。
この方法を使用すると、非同期処理が実行されるため、Node.jsのイベントループがブロックされることなく、他の処理も同時に実行できます。
なお、注意点としては、Node.jsのイベントループをブロックしないため、非同期的な処理の完了を待つことなく、ループを繰り返すため、制御が非同期処理に移行する前に次のループが開始される可能性があることです。そのため、ループ内で他の非同期処理に依存する場合は注意が必要です。
この方法を使用することで、Node.jsで非同期なwhileループを実装することができます。