问题标签 [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 投票
7 回答
14796 浏览

javascript - 事件驱动架构的jQuery插件?

是否有任何事件驱动架构 jQuery 插件?

第 1 步:订阅

替代文字
订阅者订阅中间的事件处理函数,并传入一个回调方法,以及他们正在监听的事件的名称......

即两个绿色订阅者将监听 p0 事件。蓝色的订阅者将监听 p1 事件。


第 2 步:p0 事件由另一个组件触发到事件处理程序

替代文字

  1. 向事件处理程序触发 p0 事件
  2. 事件处理程序通知它的订阅者该事件,调用他们在步骤 1:订阅中订阅时指定的回调方法。

请注意,蓝色订阅者没有收到通知,因为它没有监听 p0 事件。


第 3 步:p1 事件被触发到事件处理程序的一个组件

替代文字

p1 事件被另一个组件触发

和以前一样,只是现在蓝色订阅者通过其回调接收事件,而其他两个绿色订阅者没有接收到事件。

图片来自 leeand00,在 Flickr 上

我似乎找不到一个,但我的猜测是他们只是在 Javascript/jquery 中称它为别的东西

这种模式也有名称吗?因为它不仅仅是一个基本的发布者/订阅者,它必须被称为我认为的其他东西。

0 投票
4 回答
378 浏览

jquery - 管理 jQuery 自定义事件

我已经做了几个小时的额外研究,但我仍然找不到一个好的模式来解决我认为是常见问题的问题。

我正在开发一个 .Net MVC2 应用程序。我们的应用程序由一个主页组成,然后是多个部分视图(包含的页面),每个部分视图对应于一个由HTML结构和JS-jQuery胆量组成的小部件

我们的一些小部件相互之间有丰富的交互,所以我们当然使用 jQuery 的事件绑定来达到以下效果:

数据摘要小部件

数据操作小部件

我们遇到的问题是,当用户导航到应用程序的某些部分时,这些小部件 (HTML/DOM) 会从页面中删除并替换为新的部分视图集。当用户导航回来时,HTML(视觉表示)与创建双重绑定的 jQuery 绑定一起重新加载。

到目前为止,我的解决方案对我来说似乎很蹩脚。

(1) 绑定到绑定所针对的 DOM 对象:

这样做的问题是,然后我的触发小部件需要知道要触发的 DOM 对象:$("#summaryobject")哪种方式违背了目的。

(2) 创建一个EventBus对象来追踪谁绑定了哪些事件,并且只允许事件绑定一次。我遇到的问题是,在存储/绑定事件时,我无法跟踪谁创建了它,所以如果需要,我无法取消注册它……也许未注册的事件不是必要的事件。

其他人使用什么模式来管理自定义事件?

0 投票
3 回答
678 浏览

gwt - 其他框架中的 GWT 事件总线概念

我不知道市场上有很多框架,但我想知道一些东西,比如 GWT 中的事件总线概念,这种技术是否存在于其他框架中?

0 投票
2 回答
3167 浏览

java - 活动巴士评论

我现在开始学习GWT并学习事件总线概念。我发现这个解决方案非常复杂。所以我尝试通过自己编写原型来简化它以查看所有问题。

首先我会写一下我对事件总线的理解(这可能是完全错误的)。我们有这样的活动

处理程序接口,

用法

就是这样。现在我的原型。

用法

我认为这个解决方案要好得多,因为您不应该进行不必要的Type操作并为每个事件创建处理程序类。我只看到一个缺点 - 您应该在创建处理程序时指定泛型类型。但我认为还有许多其他缺点或问题使这个解决方案变得不可能。这些是什么?

0 投票
5 回答
10087 浏览

design-patterns - Eventbus 是中介者模式还是观察者模式?

Eventbus 更像是调解者还是观察者?据谷歌称,“eventbus mediator”获得 2.430 次点击,“eventbus observer”获得 3.850 次点击。

从描述来看,它们都符合我想要做的事情(调解员甚至更多)。那么 eventbus 是否实现了特定的模式,还是由我说它是由我决定的?

0 投票
1 回答
187 浏览

gwt - 一个 Presenter 需要访问 GWT MVP 中另一个 Presenter 的状态

我正在制作一个有三个主要演示者的应用程序。

在一个说“ListPresenter”中,我有一棵带有城市列表的树。在说“WritePresenter”时,我输入一些文本并点击更新。更新是针对其中一个城市的。在一个说“ShowPresenter”的情况下,当且仅当当前在我们的列表中单击的那个城市有可用更新时,我才会显示更新。

现在我这样做的方式是...... WritePresenter 在 EventBus 上触发一个事件,其中包含触发该事件的项目的详细信息。ShowPresenter 侦听这些事件并根据 ListPresenter 状态需要更新自身。

现在 ShowPresenter 应该如何访问 ListPresenter 状态。我可以从实例化 ListPresenter 的类中获得它的引用。但这似乎是一个很好的设计理念。似乎也在增加耦合。

最好的方法是什么?

0 投票
1 回答
2567 浏览

ajax - Google Web Toolkit (GWT) EventBus 事件触发/处理

背景故事:
我正在开发一个 GWT 应用程序,使用标准的 MVP 设计模式,还使用 ​​RPC 从我的自定义数据处理 servlet 中获取数据(在幕后做了很多工作)。无论如何,我的目标是创建一个非常简单的自定义缓存机制,将从 RPC 回调返回的数据存储在静态缓存 POJO 中。(回调还使用 SimpleEventBus 向所有注册的处理程序发送一个自定义事件。)然后当我再次请求数据时,我将在再次调用 RPC 服务器之前检查缓存。(并且还使用 EventBus 发送自定义事件)。

问题:
当我从 RPC 回调发送事件时,一切正常。问题是当我只发送缓存对象时,我在 RPC 回调之外发送事件。出于某种原因,此事件无法到达我注册的处理程序。这是一些代码:


现在我有两个活动,HelloActivity 和 GoodbyeActivity(取自:GWT MVP 代码
它们还会在调用处理程序时打印出消息。无论如何,这是我从日志中得到的输出:(不正确)

Getting Response from Cache for: com.hellomvp.client.activity.HelloActivity Response in GoodbyeActivity from: com.hellomvp.client.activity.HelloActivity Getting Response from Cache for: com.hellomvp.client.activity.GoodbyeActivity Response in HelloActivity from: com.hellomvp.client.activity.GoodbyeActivity


我期望得到的是:


如果我将上面的代码更改为以下代码,我将得到这个预期的输出:(这次是整个文件......)


所以指出,唯一的变化是我创建了一个新的 RPC 调用,它什么都不做,并在其回调中发送事件,而不是缓存数据,它使应用程序按预期工作。

所以问题:
我做错了什么?我不明白为什么 'eventBus.fireEvent(...)' 需要在 RPC 回调中才能正常工作。我认为这是一个线程问题,但我在谷歌搜索任何有用的东西都是徒劳的。

我有一个完整的 Eclipse 项目来展示我遇到的这个问题,可以在以下位置找到它:Eclipse 问题项目示例



编辑:请注意 usingeventBus.fireEventFromSource(...)仅用于调试目的,因为在我的实际 GWT 应用程序中,我有多个注册的事件处理程序。那么如何正确使用 EventBus呢?

0 投票
1 回答
654 浏览

java - Java 中的 PubSub EventBus(彗星风格)

我正在尝试构建一个非常简单的事件总线,其中订阅和发布都是在 Java 应用程序中进行的。

但是,总线需要部署在服务器端,而多个订阅者和发布者可以从不同的位置与之交互。

例如,simpleeventbusEventBus很好,但仅适用于单个 JVM。

我一直在考虑一个类似Comet的框架,但是我可以直接在 Java 中进行发布/订阅。是否存在这样的框架或库?

或者对此还有什么其他建议?

0 投票
3 回答
7982 浏览

c# - 事件总线实现问题

我正在尝试实现简单的事件总线

我是这样开始的:

但我在 PublishEvent 方法中有问题。我无法确定事件参数的类型。我怀疑这一切都是错误的。

有人可以指出我做错了什么,我应该如何实施?或者事件总线的一般实现方式,或者我可以使用的一些框架,而不是实现我自己的并花时间在上面。

0 投票
1 回答
2768 浏览

javascript - JavaScript 事件总线架构

在20:50 的这段视频(相应的幻灯片)中,Nicholas Zakas 展示了我认为的事件总线架构。我不知道与总线交互的调用是否应该是异步的?
第二个问题:如果调用是异步的,应该如何实现?
谢谢