Nodeのイベントループを1つの記事で理解する
この記事では、Nodejs のイベント ループについて説明します。皆さんが Nodejs のイベント ループを理解できるようにしたいと思っています。これからは、「Nodejs のイベント ループについて話してください」という質問者の魂を恐れることはなくなります。 !
面接中に面接官から「Nodejsのイベントループについて話しましょう」と聞かれることは誰にでもあると思います。
なぜなら、私もこの質問を受けたことがありますが、毎回恥ずかしいからです。
この問題については、さまざまな技術ブログで多く紹介されていますが、私はまったく理解できませんでした。なぜなら、これらの記事は多くの図や用語で始まることが多く、理解する勇気がすぐに消えてしまうからです。 [おすすめの関連チュートリアル: nodejs ビデオ チュートリアル 、プログラミング教育 ]
しかし、面接官はまだそれを理解できません。と聞かなければならないので、涙と歯を食いしばりながら、いくつかのチュートリアルを参照し、自分なりの要約を考え出し、すぐにみんなと共有しました。
1. イベント ループとは何ですか?
一言で言えば、イベント ループは Nodejs が非同期操作を処理するためのメカニズムです。
Js はシングルスレッドですが、なぜ Nodejs は非同期操作を処理できるのでしょうか?
Nodejs はマルチスレッド操作をシステム カーネルに引き渡すためです。
上の図:
イベント ループ--- が必要なのです。
概要: イベント ループは、Nodejs によって非同期コード コールバックの実行順序を制御するために使用されます。
3. イベント ループを理解するにはどうすればよいですか? ? ヒント 1: 同期タスクは常に非同期タスクより先に実行されます; 非同期 API の分類同期タスクについて詳しく説明する必要はありませんが、ここでは最初に非同期 API について紹介します。 Nodejs の分類:process.nectTick
process.nectTick は非同期 API に属しますが、イベント ループの一部ではありません。
上の図:非同期モジュール!
非同期モジュール
は、この魔法のようなモジュールです。nodejs は、
libuv
ライブラリを使用してカーネルを呼び出し、マルチスレッド操作。これは process.nectTick とどの程度関係がありますか?
はい、process.nectTick は非同期モジュールの一部として理解できるためです。
したがって、process.nectTick は常にイベント ループの前に呼び出されます。
? ヒント 2: process.nectTick はすべての非同期タスクの中で最も高速です;
(注: Tick
イベント ループを理解する3 つのキューを通過して 1 週間実行し、Tick になろう!)
よし、分かった!
待って...何かが足りないようですか? Promiseはどのように実行されますか?
約束
nextTick キューに加えて、マイクロタスク キューという特別なキューもあります。マイクロタスク キューは主に、Promise コールバック関数の実行を処理するために使用されます。
マイクロタスクキューの実行順序は何ですか?
上の図:
? ヒント 3: マイクロタスク キューは process.nectTick キューの後ろ、イベント ループの前に追加されます。
上記で多くのことを述べてきましたが、全体として見てみましょう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 サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











この記事では、NodeJS V8 エンジンのメモリとガベージ コレクター (GC) について詳しく説明します。

ノンブロッキングおよびイベント駆動に基づいて構築されたノード サービスには、メモリ消費量が少ないという利点があり、大量のネットワーク リクエストの処理に非常に適しています。大量のリクエストを前提として、「メモリ制御」に関する問題を考慮する必要があります。 1. V8 のガベージ コレクション メカニズムとメモリ制限 Js はガベージ コレクション マシンによって制御されます

ファイル モジュールは、ファイルの読み取り/書き込み/開く/閉じる/削除の追加など、基礎となるファイル操作をカプセル化したものです。ファイル モジュールの最大の特徴は、すべてのメソッドが **同期** と ** の 2 つのバージョンを提供することです。 asynchronous**、sync サフィックスが付いているメソッドはすべて同期メソッドであり、持たないメソッドはすべて異種メソッドです。

最近、インターフェイス ドキュメントを確認していたときに、小規模パートナーによって定義されたパラメータが列挙値であることがわかりましたが、インターフェイス ドキュメントには対応する特定の列挙値が示されていませんでした。実際、インターフェイスドキュメントをうまく書く方法は非常に重要です。今日は、Tianluo 兄弟がインターフェース設計文書で注意すべき 12 のポイントをお届けします~

この記事がもたらすのは、golang のジェネリックについての深い理解です。ジェネリック医薬品の使い方は?一定の参考値があるので、困っている友達は参考にしていただければ幸いです。

イベント ループは Node.js の基本的な部分であり、メイン スレッドがブロックされていないことを確認することで非同期プログラミングが可能になります。イベント ループを理解することは、効率的なアプリケーションを構築するために重要です。次の記事では、Node のイベント ループについて詳しく説明します。お役に立てれば幸いです。

当初、JS はブラウザ側でのみ動作していたため、Unicode でエンコードされた文字列の処理は簡単でしたが、バイナリ文字列や非 Unicode エンコード文字列の処理は困難でした。バイナリは、コンピュータのビデオ/オーディオ/プログラム/ネットワーク パッケージの最低レベルのデータ形式です。

一部の低レベル ライブラリでは、安全でないパッケージが使用されていることがよくあります。この記事では、Golang の unsafe パッケージについて理解し、unsafe パッケージの役割と Pointer の使い方を紹介します。
