問題タブ [eventemitter]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
0 に答える
42 参照

javascript - EventEmitter は、それを削除した後でもハンドラーを呼び出します

say という名前の 2 つのクラスがAあり、B両方に と という名前の 2 つのメソッドがstartありdoneます。両方のクラスのインスタンスを作成します。

startイベント onbdoneイベント toをバインドしaます。

a放出startするb.startので呼び出され、b放出doneするのa.doneで呼び出されます。このプロセスは、a.doneが決定して放出を停止するまで続きstartます。のインスタンスが 1 つだけになるまでは問題なく動作しますB

の 2 つのインスタンスを作成すると、B. b.start必要以上に 1 回余分に発射します。

興味深いことに、ゼロミリ秒done以内に放出するsetTimeout()と、完全に正常に動作します。

私はそれを正しく説明したかどうか確信が持てません。考えられる原因を教えてください。setTimeout追加が役立つ理由がわからなかった多くのことを試しました。

0 投票する
1 に答える
1660 参照

javascript - サブクラス化 events.EventEmitter が機能しない

EventEmitter をサブクラス化するにはどうすればよいですか? 私は次のテストを試みています:

ノードは「オブジェクト」にメソッド「on」がないと文句を言います。ただし、Downloader instanceOf EventEmitter をチェックすると true が返されます。

誰か説明できますか?ありがとう!

0 投票する
0 に答える
685 参照

javascript - キューに入れられた複数のイベントが EventEmitter によってトリガーされないようにする

class のインスタンスが 2 つありますMyWorkerstartこれらのオブジェクトのメソッドをstartイベントにバインドします。そして、処理するアイテムの配列があります。各オブジェクトとイベントemitに1 つのアイテムを割り当てます。start

start メソッドには非同期 IO ジョブが含まれているため、すべて正常に動作します。処理後、オブジェクトはdoneイベントを発行します。このdoneメソッドは、 かどうかをチェックしますitems.length > 0。はいの場合、次のアイテムを同じオブジェクトに割り当て、startイベントを発行します。

ここで、IO 待機時間がほとんどない場合、または IO 操作が発生しない場合を考えてみましょう。すべてが同期的に進みます。この場合、done次のオブジェクトがイベントを取得する前であっても、イベントが発生しstartます。はdone新しいオブジェクトを割り当て、start再び放出します。これが問題を引き起こします。start2 番目のオブジェクトのが 2 回呼び出されるようになりました。

これに対処する方法はありますか?

0 投票する
1 に答える
1877 参照

javascript - イベント エミッターは pub/sub を置き換えることができますか

現在、アプリでPublisher.jsを使用しており、小さなEventEmitterである Microee も使用しています。グローバルな microee インスタンスがあれば、pub/sub とほぼ同じように使用できるように思えます。たとえば、Publisher.js では次のことができます。

そしてMicroeeで私はできる:

したがって、pub/sub のこの特定のユース ケースをイベント エミッターに置き換える際に、ここで何かが欠けているのではないかと考えています。

0 投票する
1 に答える
690 参照

javascript - イベントキューを理解するNodeJS

私の理解では、NodeJS はすべてのイベントがイベント キューから排出されるまで実行され、その後終了します。さまざまな場面で、サードパーティのモジュールを使用するスクリプトを作成しましたが、実行したいことを実行しますが、終了しません。これは、他のサードパーティ製モジュールの一部がイベント キューに何かを持っているためだと思います。

キューを監視したり、キューを空にするように促したり、まだやるべきことが残っている人を特定したりするためにできることはありますか (そして、とにかく process.exit しても害がないことを知るのに十分な情報を得ることができます)

ご提案いただきありがとうございます。

0 投票する
2 に答える
1235 参照

node.js - EventEmitter 子からのすべてのメッセージを処理する

EventEmiter の「クラス」から継承したオブジェクトがあります。

多くのイベント ( emitter.on) があり、それらの名前がわかりません。
どうすれば名前を取得できますか? また、すべてのイベントを処理するにはどうすればよいですか?