ホームページ >ウェブフロントエンド >jsチュートリアル >Nodeのイベントループを1つの記事で理解する
この記事では、Nodejs のイベント ループについて説明します。皆さんが Nodejs のイベント ループを理解できるようにしたいと思っています。これからは、「Nodejs のイベント ループについて話してください」という質問者の魂を恐れることはなくなります。 !
面接中に面接官から「Nodejsのイベントループについて話しましょう」と聞かれることは誰にでもあると思います。
なぜなら、私もこの質問を受けたことがありますが、毎回恥ずかしいからです。
この問題については、さまざまな技術ブログで多く紹介されていますが、私はまったく理解できませんでした。なぜなら、これらの記事は多くの図や用語で始まることが多く、理解する勇気がすぐに消えてしまうからです。 [おすすめの関連チュートリアル: nodejs ビデオ チュートリアル 、プログラミング教育 ]
しかし、面接官はまだそれを理解できません。と聞かなければならないので、涙と歯を食いしばりながら、いくつかのチュートリアルを参照し、自分なりの要約を考え出し、すぐにみんなと共有しました。
一言で言えば、イベント ループは Nodejs が非同期操作を処理するためのメカニズムです。
Js はシングルスレッドですが、なぜ Nodejs は非同期操作を処理できるのでしょうか?
Nodejs はマルチスレッド操作をシステム カーネルに引き渡すためです。
上の図:
イベント ループ--- が必要なのです。
概要: イベント ループは、Nodejs によって非同期コード コールバックの実行順序を制御するために使用されます。
3. イベント ループを理解するにはどうすればよいですか? ? ヒント 1: 同期タスクは常に非同期タスクより先に実行されます; 非同期 API の分類同期タスクについて詳しく説明する必要はありませんが、ここでは最初に非同期 API について紹介します。 Nodejs の分類:process.nectTick
process.nectTick は非同期 API に属しますが、イベント ループの一部ではありません。
上の図:非同期モジュール!
非同期モジュール
は、この魔法のようなモジュールです。nodejs は、
これは process.nectTick とどの程度関係がありますか?
はい、process.nectTick は非同期モジュールの一部として理解できるためです。
したがって、process.nectTick は常にイベント ループの前に呼び出されます。
(注: Tick
イベント ループを理解する3 つのキューを通過して 1 週間実行し、Tick になろう!)
よし、分かった!
待って...何かが足りないようですか? Promiseはどのように実行されますか?
nextTick キューに加えて、マイクロタスク キューという特別なキューもあります。マイクロタスク キューは主に、Promise コールバック関数の実行を処理するために使用されます。
マイクロタスクキューの実行順序は何ですか?
上の図:
console.log('同步代码')setImmediate(() => { console.log('setImmediate');})setTimeout(() => { console.log('setTimeout');}, 100)Promise.resolve().then(() => { console.log('promise');})process.nextTick(() => { console.log('Tick');})复制代码それでは次回は、具体的なインタビュー事例を組み合わせて、その印刷順序を確認していきます。 ノード関連の知識の詳細については、
nodejs チュートリアル を参照してください。
以上がNodeのイベントループを1つの記事で理解するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。