よく知られているように、Javacript はシングルスレッド言語ですが、なぜ非同期操作ができるのでしょうか?非同期操作は、マルチスレッドおよびマルチプロセス機能を備えたブラウザによって実行されるためです。 Javascript は常に単一スレッドで実行され、非同期コードが検出されると実行のためにブラウザに渡され、ブラウザは http リクエスト、GUI、イベント トリガーなどの対応するスレッドまたはプロセスを呼び出して、これらの非同期操作を処理します。 .
一般に、Javasctip タスクは、同期タスク、マイクロタスク、マクロタスクの 3 つのカテゴリに分類でき、同期 -> タスクの順序で実行されます。マイクロ ->マクロ。最初に同期コードが実行され、その後ブラウザは同期タスクの完了を待つマイクロ タスク キューにマイクロ コードを入れ、さらにマイクロ コードの完了を待つマクロ タスク キューにマクロ コードを入れます。
この優先順位は、OS 上のマルチレベルのフィードバック キュー スケジューリング アルゴリズムに似ています。
共通のマイクロタスク: Promise.then()、Promise.catch()、新しい MutationObserver()、process.nextTick()
共通マクロタスク: setTimeout、setInterview、requestAnimationFrame()
ちなみに、process.nextTick() はマイクロタスクでもマクロタスクでもなく、同期コードの後、マイクロタスクの前に実行されるだけです。
以上がJavascriptイベントループルールの詳細説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。