問題タブ [event-bus]
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.
events - イベントバスのイベント順序
朝、
バスを使用してSimpleEvent
、集中型データ リバイバーからウィジェットにデータを送信しています。これは非常にうまく機能します。サーバーから新しいデータのセットを取得し、RPC 呼び出しの成功メソッドがそれをイベントバスに置きます。各ウィジェットは、データが目的のものであるかどうかを調べます。そうでない場合は、それを「表示」します。リクエストごとに 1 つのデータ セットしかなく、ウィジェットは既に送信されている他のデータに依存しません。
これで、ツリー ウィジェットができました。ツリーの子ノードも作成され、このデータ セットをスローします。この子ノードは、自身をイベントバスに登録して、子ノードのデータを復活させます。データは(パフォーマンス上の理由から)急いで受信されるため、「同時に」(forループで)イベントバスに置かれる複数のデータセットを取得します。それらがそこに配置される順序のみを制御します(最初にルート、次に最初の子のデータ......)。Eventbus はどのようにイベントを進めますか?
- 彼は最初のイベントが完了するまで待っているので、ツリーの最初の子はすでに作成を完了しており、それ自体をイベントバスに登録して、その子のデータを作成するためにデータを復活させます。
- 彼はそれらを同時に処理するので、ウィジェットはイベントバスに登録さえされません。
- 彼は注文を混同しますか?!?!
現在のソリューション アプローチ:
- 私が考えることができる最善の解決策は、前のイベントが完了したときにのみ新しいイベントをイベントバスに置くことです。ただし、そうする方法、またはそれが Eventbus の標準的な動作である場合は、方法を見つけました。
- イベントがウィジェットによって処理されたときに、リクエスト処理終了イベントを発生させます。うん...これは多くの追加コードにつながり、どのウィジェットにも属さないイベントバスにデータが置かれると、大きな問題を引き起こします....
- リクエストが処理されたときに true に設定された静的変数を登録し、イベントバスがイベントバスに次のリクエストを送信するまでこれだけ待機します (2 つに似ていますが、コーディング スタイルが悪く、同じ問題があります)。
- すべてのイベントは、ルート ツリー要素によって処理され、それぞれの子要素に送信されます。
どちらのソリューションを希望しますか?またその理由は?
よろしく、ステファン
PS: 私のお気に入りの答えは、1. が Eventbus の標準的な動作であるということです^^
gwt - GWT での EventBus の役割
EventBus を使用した GWT でのこのクールなイベント処理について読みましたが、今のところとても気に入っています。しかし、いつ使うべきかという概念がよくわかりません。いつも?使いすぎてもいいですか?イベント関連のすべてに使用する必要がありますか? (MVP のビューとプレゼンター レイヤー間の通信のように? または onMouseMove イベントで使用できますか? それはどのくらい重いですか?)
では、1 つの質問として、GWT における EventBus の正確な役割は何でしょうか?
gwt - GWT イベント バスでディスパッチされたすべてのイベントをリッスンする方法は?
Event Bus
タイプに関係なく、 でディスパッチされたすべてのイベントをリッスンできるようにしたいと考えています。これどうやってするの?
java - GuavaEventBusのアノテーションとインターフェース
Guava開発者は、アノテーションを使用することを選択しました。
...従来のインターフェースの代わりに:
これにより、コンパイル時のチェックが不可能になります。ですから、このアプローチの利点は何でしょうか。
ここに注釈の利点がありますか?
gwt - HandlerManager はソースとどのように連携しますか?
HandlerManagerを分析しましたが、イベント ソースの処理方法がわかりません。117 行目:
ただし、単純なイベント バスの実装には、86 行目の次のコードがあります。
そのため、HandlerManagerは常にdoFire(event, null);を呼び出すため、ソースでイベントを発生させません。
HandlerManager がソースのイベントを発生させる方法を明確にしていただけますか? Widget で使用される HandlerManager として、Widget インスタンスのみのイベントをどのように発生させますか?
java - Gwt 2.4 での EventBus と Gin のトラブル
MVP GWT 2.4 で Gin を使用しようとしています。私のモジュールには、次のものがあります。
上記のコードでは、新しいcom.google.web.bindery.event.shared.EventBus
. アクティビティを実装する MVP アクティビティにイベント バスを挿入したい場合に問題が発生します。
Activity
非推奨の を使用しcom.google.gwt.event.shared.EventBus
ます。どうすれば2つを調和させることができますか? 明らかに、非推奨タイプの EventBus を要求すると、そのバインディングを指定していないため、Gin は文句を言うでしょう。
更新: これにより、アプリをビルドできるようになりますが、今では 2 つの異なるEventBus
s があり、これはひどいものです:
gwt - GWTのAbstractActivity.startに渡されるEventBusは、何に使用されることを目的としていますか?
アクティビティフレームワークを使用する前に、通常、GWTEventBusのグローバル/シングルトンインスタンスを1つ持っていました。ここで、アクティビティクラスがインスタンスをアクティビティに渡すことに気付きました。このイベントバスは、クロスアプリケーションのクライアント側の一般的なメッセージパッシングまたは他の何かを行うことを目的としていますか?
gwt - GWT コンポーネントで EventBus を使用するためのベスト プラクティス
アプリケーションの 2 つの場所で使用されているコンポーネント C があるとします。たとえば、2 つのタブに表示されているフォルダーのリストがあります。ユーザーが一方のフォルダの名前を変更すると、この変更は他方にも反映される必要があります。
これには EventBus を使用し、フォルダー コンポーネントで EventBus イベント (FolderChangedEvent など) を発生させることを考えています。このイベントは、そのフォルダー リストを自動的に更新する 2 番目のフォルダー コンポーネントによってインターセプトされます。
問題は、ある時点でこのフォルダー コンポーネントを 3 番目の場所で使用したい場合、この場所のフォルダー リストも更新されるということです。これは、アプリケーションの望ましい動作ではない可能性があります。
通常は、Folder コンポーネントに独自の addFolderChangedHandler(...) メソッドを持たせますが、このコンポーネントは非常に複雑でサブコンポーネントがあるため、スパゲッティ タイプのコードが作成される可能性があります。ただし、このコンポーネントにアプリケーション固有のロジックを含めて、アプリケーションの EventBus にイベントを直接スローする必要はないと思います。
この場合のベスト プラクティスは何ですか? EventBus を効率的に使用するにはどうすればよいですか?
android - グアバイベントバスが機能しない
AndroidでGuavaイベントバスを使用しようとしていますが、サブスクライブしたイベントが機能していないようです...何が間違っているのですか?
これは私の活動です:
java - Akka EventBus for Java の例
Akka が提供する EventBus を Java (Scala ではありません!) で使用する方法についてアドバイスが必要です。Web サイトのドキュメントは不完全なようです: http://doc.akka.io/docs/akka/2.0.1/java/event-bus.html
私が理解している限り、次のような特定のメッセージに反応するようにアクターを作成する必要があります。
しかし、イベント バスにメッセージを送信する方法が明確ではありません。
誰かが良いチュートリアル/例/などを共有できますか?