node.js_node.js のタイマー nextTick() と setImmediate() の違いの分析
1. ノードでタイマーを使用する場合の問題は、それが正確ではないことです。たとえば、setTimeout() は 10 ミリ秒後にタスクが実行されるように設定しますが、9 ミリ秒以降はタスクに 5 ミリ秒かかります。もう一度ターンします。4 ミリ秒遅れています。
ノードのタイマーについては以上です。
2. コードを見てください:
process.nextTick(function(){
console.log("遅延実行");
});
console.log("通常実行1");
console.log("通常実行2");
console.log("通常実行3");
console.log("通常実行4");
この例を通して、nextTick() が主に非同期実行に使用されることが誰でも明確にわかると思います。
コードを見てみましょう:
console.log("遅延実行");
});
console.log("通常実行");
では、nextTick() との違いは何でしょうか?
コードを見てください:
コード 1:
console.log("nextTick 遅延")
});
setImmediate(function(){
console.log("setImmediate遅延");
});
console.log("通常実行");
console.log("setImmediate遅延");
});
process.nextTick(function(){
console.log("nextTick 遅延")
});
console.log("通常実行");
結果からわかります:
nextTick()のコールバック関数の実行優先度はsetImmediate()よりも高いです
process.nextTick() はアイドル オブザーバーに属し、setImmediate() はチェック オブザーバーに属します。ループ検査の各ラウンドでは、アイドル オブザーバーが I/O オブザーバーに先行し、I/O オブザーバーがチェックに先行します。観察者。
具体的な実装に関しては、process.nextTick() のコールバック関数は配列
に格納されます。
setImmediate()の結果はリンクリストに保存されます。
動作に関しては、 process.nextTick() は各サイクルで配列内のすべてのコールバック関数を実行します。
そして setImmediate() は各サイクル
でリンクされたリスト内のコールバック関数を実行します。
console.log("nextTick 遅延実行 1");
});
process.nextTick(function(){
console.log("nextTick 遅延実行 2");
});
// setImmediate() コールバック関数を 2 つ追加します
setImmediate(function(){
console.log("setImmediate 遅延実行 1");
Process.nextTick(function(){
console.log("強い挿入");
});
});
setImmediate(function(){
console.log("setImmediate 遅延実行 2");
});
console.log("通常実行");
実行結果からわかるように、setImmediate() の最初のコールバック関数が実行されると、2 番目のコールバック関数はすぐには実行されず、最初に nextTick() を再度 setImmediate() 回押します。この設計の理由は、各ループが迅速に終了し、CPU が過剰に占有して後続の I/O 呼び出しがブロックされるのを防ぐためです。
上記はnode.jsのタイマーnextTick()とsetImmediate()の違いについての情報です。

ホット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 はガベージ コレクション マシンによって制御されます

ノード用の Docker イメージの選択は些細なことのように思えるかもしれませんが、イメージのサイズと潜在的な脆弱性は、CI/CD プロセスとセキュリティに大きな影響を与える可能性があります。では、最適な Node.js Docker イメージを選択するにはどうすればよいでしょうか?

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

Node 19 が正式リリースされましたので、この記事では Node.js 19 の 6 つの主要な機能について詳しく説明します。

Node.js はどのように GC (ガベージ コレクション) を行うのでしょうか?次の記事で詳しく説明します。

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

ノードが npm コマンドを使用できない理由は、環境変数が正しく設定されていないためです。解決策は次のとおりです: 1. 「システムのプロパティ」を開きます; 2. 「環境変数」->「システム変数」を見つけて、環境を編集します。変数; 3.nodejs フォルダーの場所を見つけます; 4.「OK」をクリックします。
