问题标签 [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.

0 投票
2 回答
3295 浏览

events - Eventbus 事件顺序

早晨,

我正在使用SimpleEvent总线将数据从我的集中式数据恢复器发送到小部件。这真的很好,我从服务器获得一组新数据,RPC调用的成功方法将它放在Eventbus上,每个小部件都会查看数据是否适合它,如果是,它会“显示”它,如果不是,它什么都不做。每个请求只有一个数据集,小部件不依赖于已经发送的其他数据。

现在我有一个 Tree 小部件。树的子节点也被创建并抛出此数据集,并且此子节点将自身注册到 Eventbus 以恢复其子节点的数据。数据应在匆忙中接收(出于性能原因obv),因此我将获得多个数据集,这些数据集“同时”(在for循环中)放在Eventbus上。我只控制它们放在那里的顺序(首先是根,然后是第一个孩子的数据......)。Eventbus 现在如何进行活动?

  • 他是否等到第一个事件完成,所以树的第一个孩子已经完成创建并将自己注册到 Eventbus,以恢复数据以创建它的孩子。
  • 他是否同时处理它们,所以小部件甚至没有注册到 Eventbus。
  • 他把顺序弄乱了吗?!?!

目前的解决方法:

  1. 我能想到的最佳解决方案是仅在前一个事件完成后才将新事件放在 Eventbus 上。但是我找到了一种方法,或者它是 Eventbus 的标准行为。
  2. 当小部件处理事件时,触发请求处理完成事件。哎呀......当数据放在不属于任何小部件的事件总线上时,这会导致大量额外代码并导致大问题......
  3. 注册一个静态变量,当请求得到处理时设置为 true,Eventbus 等待这么长时间,直到他将下一个请求放在 Eventbus 上(安静类似于两个,但更糟糕的编码风格和同样的问题)
  4. 所有事件都由根树元素处理,根树元素将它们向上发送到相应的子元素。

您更喜欢哪种解决方案,为什么?

问候,斯特凡

PS:我最喜欢的答案是 1. 是 Eventbus 的标准行为^^ PPS:解决方案也应该在引入 Webworkers 时起作用。

0 投票
3 回答
2153 浏览

gwt - GWT 中的 EventBus 角色

我在 GWT 中使用 EventBus 阅读了这个很酷的事件处理,到目前为止我真的很喜欢它。但我并没有真正掌握这个概念什么时候应该使用它。每时每刻?我可以过度使用它吗?我应该将它用于与事件相关的所有事情吗?(就像 MVP 中的视图和演示者层之间的通信?或者我可以将它与 onMouseMove 事件一起使用吗?它有多重量级?)

那么问题来了:EventBus 在 GWT 中究竟扮演什么角色?

0 投票
2 回答
1002 浏览

gwt - 如何监听 GWT 事件总线上调度的所有事件?

我希望能够收听在 上调度的所有事件Event Bus,无论类型如何。我怎样才能做到这一点?

0 投票
1 回答
2315 浏览

java - Guava EventBus 中的注解与接口

Guava开发人员选择使用注解:

...而不是经典界面:

这使得编译时检查变得不可能。所以我想知道这种方法的优势是什么。

您在这里看到注释的任何优点吗?

0 投票
1 回答
1237 浏览

gwt - HandlerManager 如何处理源代码?

我分析了HandlerManager看不到它如何处理事件源。第 117 行:

但是简单的事件总线实现有以下代码,第 86 行:

因此,HandlerManager不会使用源触发事件,因为它总是调用doFire(event, null);

你能说清楚 HandlerManager 如何为源触发事件吗?作为 Widget 中使用的 HandlerManager,它如何只为 Widget 实例触发事件?

0 投票
4 回答
1413 浏览

java - Gwt 2.4 中的 EventBus 和 Gin 问题

我正在尝试在 MVP GWT 2.4 中使用 Gin。在我的模块中,我有:

上面的代码使用了新的com.google.web.bindery.event.shared.EventBus. 当我想在实现 Activity 的 MVP 活动中注入事件总线时,问题就来了:

Activity使用已弃用的com.google.gwt.event.shared.EventBus. 我怎样才能调和两者?显然,如果我要求使用已弃用的 EventBus 类型,那么 Gin 会抱怨,因为我没有为它指定绑定。

更新:这将允许应用程序构建,但现在有两个不同EventBus的 s,这很糟糕:

0 投票
1 回答
423 浏览

gwt - 传递到 GWT 中 AbstractActivity.start 的 EventBus 打算用于什么?

在使用活动框架之前,我通常会有一个 GWT EventBus 的 Global/Singleton 实例。现在我注意到活动类将一个实例传递给我的活动。这个事件总线是打算做跨应用程序客户端的通用消息传递还是其他什么?

0 投票
2 回答
1614 浏览

gwt - 将 EventBus 与 GWT 组件一起使用的最佳实践

假设我有一个组件 C 在我的应用程序的两个地方使用。例如,我有一个显示在 2 个选项卡中的文件夹列表。当用户重命名文件夹的一部分时,此更改也应反映在另一部分中。

我正在考虑为此使用 EventBus 并使文件夹组件触发 EventBus 事件,例如 FolderChangedEvent。此事件将被第二个文件夹组件拦截,该组件将自动更新其文件夹列表。

问题是如果我想在某个时候在第三个地方使用这个文件夹组件,这个地方也会更新文件夹列表。这可能不是应用程序的期望行为。

通常,我会让 Folder 组件有一个自己的 addFolderChangedHandler(...) 方法,但是由于这个组件非常复杂并且有子组件,这可能会创建意大利面条式的代码。但是,我不觉得这个组件应该包含任何特定于应用程序的逻辑并直接在应用程序的 EventBus 中引发事件,这对它来说太高级了。

这种情况下的最佳实践是什么?您如何有效地使用 EventBus?

0 投票
1 回答
2336 浏览

android - 番石榴事件总线不工作

我正在尝试在 Android 中使用 Guava 事件总线,但我订阅的事件似乎不起作用......我做错了什么?

这是我的活动:

0 投票
2 回答
5025 浏览

java - 用于 Java 的 Akka EventBus 示例

需要一些关于如何在 Java(不是 Scala!)中使用 Akka 提供的 EventBus 的建议。网站上的文档似乎不完整:http ://doc.akka.io/docs/akka/2.0.1/java/event-bus.html

据我了解,应该创建actor以对特定消息做出反应,例如:

但是现在还不清楚如何向事件总线发送消息。

有人可以分享一些好的教程/示例/等吗?