ホームページ >ウェブフロントエンド >jsチュートリアル >イベントループ — JavaScript
イベント ループは、JavaScript コードの実行順序を維持する (メイン スレッドをブロックせずに非同期操作を処理する) ループです。
これは、タスクを待機し、実行のために呼び出しスタックにタスクをプッシュする無限ループです。 JavaScript はシングルスレッドであるため、優先度に基づいて同期と非同期の両方の操作を処理するための実行順序が維持されます。
// Programmatic way of how the event loop processes tasks while (true) { // Step 1: Execute tasks in the call stack while (!callStack.isEmpty()) { const currentTask = callStack.pop(); currentTask(); // Executes the task } // Step 2: Process all microtasks while (!microTasksQueue.isEmpty()) { const microTask = microTasksQueue.shift(); callStack.push(microTask); // Push microtask to call stack for execution } // Step 3: Process one macrotask if available if (!macroTasksQueue.isEmpty()) { const macroTask = macroTasksQueue.shift(); callStack.push(macroTask); // Push macrotask to call stack for execution } // Break if there's nothing left to process if (callStack.isEmpty() && microTasksQueue.isEmpty() && macroTasksQueue.isEmpty()) { break; } }
ワークフローをよりよく理解するために例を見てみましょう
1. setTimeout(() => console.log(1), 2000); 2. Promise.resolve().then(() => { 3. console.log(2); 4. queueMicroTask(() => console.log(3)); 5. }); 6. Promise.resolve().then(() => { 7. console.log(4); 8. setTimeout(() => console.log(5)); 9. }); 10. setTimeout(() => console.log(6)); 11. console.log(7); // 7 2 4 3 6 5 1
2 つのキュー microTasks と macroTasks があると仮定します。コードの実行が開始されると、
読んでいただきありがとうございます!このブログが有益で魅力的であると感じていただければ幸いです。不正確な点に気づいた場合、またはフィードバックがある場合は、遠慮なくお知らせください。
以上がイベントループ — JavaScriptの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。