16

sax nodejs モジュールを調べているときに、複数のemit関数呼び出しを見ましたが、それに関する情報が見つかりません。

イベントを発行するための V8 ネイティブ ツールですか? sax-jsそれでは、ストリームに EventEmitter を使用しないのはなぜですか?

4

3 に答える 3

29

node.js では、イベントは、対応するコールバックを含む文字列として簡単に記述できます。イベントは複数回「発行」する (つまり、対応するコールバックを呼び出す) ことができます。また、最初に発行されたときだけリッスンするように選択することもできます。

on または addListener メソッド (基本的にはサブスクリプション メソッド) を使用すると、監視するイベントと呼び出すコールバックを選択できます。一方、emit メソッド (publish メソッド) を使用すると、イベントを「発行」できます。これにより、イベントに登録されているすべてのコールバックが「起動」(呼び出されます) されます。

参照: https://docs.nodejitsu.com/articles/getting-started/control-flow/what-are-event-emitters/ (これは古いリンクであり、もう機能しません)

于 2015-08-27T10:02:31.000 に答える
11

短い: Emit の仕事は、名前付きイベントをトリガーすることです。これにより、リスナーと呼ばれる関数が呼び出されます。

詳細: Node.js コア API は、特定の種類のオブジェクト (「エミッター」と呼ばれる) が関数オブジェクト (「リスナー」) を呼び出す名前付きイベントを定期的に発行する慣用的な非同期イベント駆動型アーキテクチャを中心に構築されています。

イベントを発行するすべてのオブジェクトは、EventEmitter クラスのインスタンスです。これらのオブジェクトは、オブジェクトによって発行された名前付きイベントに 1 つ以上の関数を関連付けることができるようにする eventEmitter.on() 関数を公開します。

EventEmitter オブジェクトがイベントを発行すると、その特定のイベントに関連付けられているすべての関数が同期的に呼び出されます。呼び出されたリスナーから返された値は無視され、破棄されます。

詳細はこちら

于 2018-04-04T05:29:36.903 に答える
5

同じファイルの行番号 624 を見てください。

function emit (parser, event, data) {

  parser[event] && parser[event](data)

}
于 2015-08-27T10:02:33.230 に答える