2017-10-07 16 views
1

イベントを生成するためにeventEmitterを使用しています。実際それは非常に一般的な方法です。パブリッシュ/サブスクライブパターンの引数はどのように機能しますか?

eventEmitter.emit('started', data, date); 

私たちはそれをキャッチしようとします。矢印機能を使用するとすべてがはっきりしています。 'data'と 'date'は引数として関数に渡されます。

someInstanse.event.on('started', (data, date) => { 
    //crazy stuff here 
}) 

実際にこの表記はどのように機能しますか?私たちは、エミッタと3つの引数を決定し、私たちは本当に代わりに

someInstance.event.on('started', function(data, date) { 
}); 

を唯一のイベント文字列と機能を持っている今、私は矢印の機能を追加する前に、それはこれが公開典型的なものである

+0

Node docsを開き、そのemitメソッドを読み込むと、引数がリスナーに渡されます。また、すべてのemitter.on(eventName、listener)は、リスナーがコールバック関数であることを意味します。だから今は問題ではない。 –

+0

データがコールバック関数に渡される方法が混乱しますか?またはどのようにイベントメーターはボンネットの下で動作しますか? – Chang

+0

はい、今私はそれを公式化する方法を知っています。私は、クライアント側で 'emit'が呼び出されても、サーバ上で' emit'が発生しない理由を知りません。パブリッシュ/サブスクライブパターンに従って、すべての放出はリスナーの関数を反復して実行し、ハンドルを持つ配列が定義されていない場合はfalseを返します。私はSocket.IOライブラリを試しているので、サーバ自身が呼び出す 'emits'をフックすることしかできません。 –

答えて

1

無名関数を呼び出すための唯一の方法だったと仮定します/購読デザインパターン。そして、実際にはemitの方法と、そのイベントに加入者がどのように反応するかによって決定されます。

基本的に、publish関数では、publish(emit)の情報とともに提供されるすべてのサブスクライバ(on)関数を呼び出す必要があります。以下はちょうどいくつかの疑似コードです。

あなたが見たいと思えば、私はgithubで縮小されたpub/subパターンを書きました。この問題を理解するのに役立つと非常に役に立ちます。 https://github.com/thomasyimgit/pubsub/blob/master/index.js

関連する問題