問題タブ [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.
javascript - EventEmitter は、それを削除した後でもハンドラーを呼び出します
say という名前の 2 つのクラスがA
あり、B
両方に と という名前の 2 つのメソッドがstart
ありdone
ます。両方のクラスのインスタンスを作成します。
start
イベント onb
とdone
イベント toをバインドしa
ます。
a
放出start
するb.start
ので呼び出され、b
放出done
するのa.done
で呼び出されます。このプロセスは、a.done
が決定して放出を停止するまで続きstart
ます。のインスタンスが 1 つだけになるまでは問題なく動作しますB
。
の 2 つのインスタンスを作成すると、B
. b.start
必要以上に 1 回余分に発射します。
興味深いことに、ゼロミリ秒done
以内に放出するsetTimeout()
と、完全に正常に動作します。
私はそれを正しく説明したかどうか確信が持てません。考えられる原因を教えてください。setTimeout
追加が役立つ理由がわからなかった多くのことを試しました。
javascript - サブクラス化 events.EventEmitter が機能しない
EventEmitter をサブクラス化するにはどうすればよいですか? 私は次のテストを試みています:
ノードは「オブジェクト」にメソッド「on」がないと文句を言います。ただし、Downloader instanceOf EventEmitter をチェックすると true が返されます。
誰か説明できますか?ありがとう!
javascript - キューに入れられた複数のイベントが EventEmitter によってトリガーされないようにする
class のインスタンスが 2 つありますMyWorker
。start
これらのオブジェクトのメソッドをstart
イベントにバインドします。そして、処理するアイテムの配列があります。各オブジェクトとイベントemit
に1 つのアイテムを割り当てます。start
start メソッドには非同期 IO ジョブが含まれているため、すべて正常に動作します。処理後、オブジェクトはdone
イベントを発行します。このdone
メソッドは、 かどうかをチェックしますitems.length > 0
。はいの場合、次のアイテムを同じオブジェクトに割り当て、start
イベントを発行します。
ここで、IO 待機時間がほとんどない場合、または IO 操作が発生しない場合を考えてみましょう。すべてが同期的に進みます。この場合、done
次のオブジェクトがイベントを取得する前であっても、イベントが発生しstart
ます。はdone
新しいオブジェクトを割り当て、start
再び放出します。これが問題を引き起こします。start
2 番目のオブジェクトのが 2 回呼び出されるようになりました。
これに対処する方法はありますか?
javascript - イベント エミッターは pub/sub を置き換えることができますか
現在、アプリでPublisher.jsを使用しており、小さなEventEmitterである Microee も使用しています。グローバルな microee インスタンスがあれば、pub/sub とほぼ同じように使用できるように思えます。たとえば、Publisher.js では次のことができます。
そしてMicroeeで私はできる:
したがって、pub/sub のこの特定のユース ケースをイベント エミッターに置き換える際に、ここで何かが欠けているのではないかと考えています。
javascript - イベントキューを理解するNodeJS
私の理解では、NodeJS はすべてのイベントがイベント キューから排出されるまで実行され、その後終了します。さまざまな場面で、サードパーティのモジュールを使用するスクリプトを作成しましたが、実行したいことを実行しますが、終了しません。これは、他のサードパーティ製モジュールの一部がイベント キューに何かを持っているためだと思います。
キューを監視したり、キューを空にするように促したり、まだやるべきことが残っている人を特定したりするためにできることはありますか (そして、とにかく process.exit しても害がないことを知るのに十分な情報を得ることができます)
ご提案いただきありがとうございます。
node.js - EventEmitter 子からのすべてのメッセージを処理する
EventEmiter の「クラス」から継承したオブジェクトがあります。
多くのイベント ( emitter.on
) があり、それらの名前がわかりません。
どうすれば名前を取得できますか? また、すべてのイベントを処理するにはどうすればよいですか?