Node.jsでのProcess.nextTickの使用例

高洛峰
高洛峰オリジナル
2016-12-26 09:16:301600ブラウズ

process.nextTick の呼び出しをどこで最初に見たのか思い出せません。ああ、公式の nodejs プロセス ドキュメントで見たはずです。当時、私はこれが何のためにあるのか理解していませんでした。setTimeout は既に存在していたのに、なぜこの関数が必要なのでしょうか。根本的に言えば、この関数は何をするのでしょうか? setTimeout と setTimeout の違いは何ですか?

私の問題を基本的に説明している非常に優れた投稿が stackoverflow にあります。ここにリンクを添付し、その例を示します:

stackoverflow.com >> Node の nextTick の適切な使用例は何ですか。 .js?

var MyConstructor = function() {
 ...
 process.nextTick(function() {
  self._continue();
 });
};
  
MyConstructor.prototype.__proto__ = EventEmitter.prototype;
  
MyConstructor.prototype._continue = function() {
 // without the process.nextTick
 // these events would be emitted immediately
 // with no listeners. they would be lost.
 this.emit('data', 'hello');
 this.emit('data', 'world');
 this.emit('end');
};
  
function(req, res, next) {
 var c = new MyConstructor(...);
 c.on('data', function(data) {
  console.log(data);
 });
 c.on('end', next);
}

簡単に言えば、非同期モデルのため、一部のコードは必要な条件が完了する前に実行される可能性があるため、前提条件が必要なこれらのコードをコールバック関数に入れて、次のコードの最上位に配置します。イベントループ。この場合、これらのコードはすぐには実行されず、次のイベント ラウンドが開始されるまで待機し、開始後に実行されます。

Node.js での process.nextTick の使用例に関連するその他の記事については、PHP 中国語 Web サイトに注目してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。