问题标签 [event-dispatching]
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.
php - 如何在 EventListener 中触发事件?
我正在编写一个 PHP 应用程序,并希望为我的业务逻辑的核心部分实现中介者模式。这个“核心”其实是一种有很多事件和状态的游戏。因此,事件驱动的处理似乎是最佳方法。
中介者模式本身没有问题。我只需要创建一个EventDispatcher
并附加一些Listener
s 到它。
(实际上在我的具体情况下它有点复杂:Listener
s 需要实现类似责任链或状态模式的东西,以便根据流程的当前状态以不同的方式处理相同的事件。)
问题是,对事件的处理可能会改变进程的状态并引发进一步的事件。这意味着,侦听器应该能够触发事件。这意味着:
- 他们需要知道
EventDispatcher
. 所以EventDispatcher
需要要么通过构造函数注入,要么传递给 notification(notify(string $eventName, Event $event, EventDispatcher $eventDispatcher)
) 方法。 - 每个听众都需要了解它触发的所有事件的细节。注入它们将不是一个切实可行的解决方案。所以我们会
new MyEvent(...)
在监听器中得到很多语句,代码会变得更难测试。
对我来说,两者都有腐烂的气味......
如何解决这个困境,让代码干净,when EventListener
s 触发事件?
symfony - 如何在 Symfony 中以紧凑的形式设置事件处理程序?
我正在编写一个 Symfony 4 应用程序。它的核心是一个包含一些嵌套子流程的流程。一般来说,这个想法,如何处理它看起来像这样:
有一些process
es(主要流程及其子流程的层次结构)。每个进程都有一组state
s。每个进程都有一组 allowed event
s。
这种机制的门面是SystemEventHander
. 它注册处理的进程,分析传入的请求,并为当前事件找到并执行适当的处理程序。
services.yaml
所以我的所有自定义事件最初只由一个处理程序处理:SystemEventHandler()
.
问题是,对于每一个事件,我必须编写几乎相同的行:
只有process_name:event_name
变化,其余的都是静态的。
Image 我有很多活动——30 个?50?100?我怎样才能避免为每一行显式地写一个新行?
javascript - three.js 的 EventDispatcher 可以用于类之间的通信吗?
核心问题
在一个支持 EventDispatcher 的类上发出的事件不会被另一个支持 EventDispatcher 的类拾取。
如何让通信在整个应用程序范围内工作,以便我可以传递消息?
目前它似乎只支持将消息传递给它自己的类。
背景
我正在使用这个样板文件,它给了我三个.js 和 es6:
https://github.com/paulmg/ThreeJS-Webpack-ES6-Boilerplate
我已经手动更新了软件包以使用 three.js r97。
我正在查看 EventDispatcher 类,我认为这是一种在系统中传递消息同时保持解耦的干净方式。例如,我有一些 HTML UI 可以监视一个复选框。
精简到核心示例,我有interaction.js:
我有 boxmanager.js(精简到核心位):
当我在事件侦听器上触发boxOpenStateToggled
事件时不会捕获它。Interaction
BoxManager
我得到一个这样的控制台日志:
我在这里期待看到“BoxManager 中捕获的事件”——它是系统范围的事件调度程序吗?或者它只能在每个类的基础上在内部调度事件?
展示我的工作
我不确定这是否是我使用它的方式,所以我尝试了:
使用
extends
类上的关键字来提供EventDispatcher
功能,它可以工作,但只能在类中使用。最初使用的
.call
是three.js 早期版本中的版本。
我找不到任何关于使用 EventDispatcher 的真正讨论或示例,也找不到它在库中的使用位置。
我误解了它的目的吗?我用错了吗?
android - 单击其中的 EditText 时如何触发 LinearLayout 的单击事件?
当我点击电视时,我可以触发ll的点击事件。
但是,当我点击 et 时,我不能。
似乎 et 消耗了点击事件。
如何解决这个奇怪的问题?
javafx - JavaFX - StackPane 与窗格作为 EventDispatcher
在事件调度程序窗格中发生鼠标按下事件。当事件发生时,窗格应显示其组合框的上下文菜单。
如果仅将事件分配到窗格之一,则效果很好。当事件被分配到窗格一和窗格二时,窗格一的上下文菜单不会显示。我想这与事件尾部和事件消耗有关。
到目前为止,我还没有看过 JDK 本身的 EventDispatcher 类。
这是我到目前为止得到的:
任何想法如何处理这个?
symfony - 我什么时候应该从 Symfony EventDispatcher 切换到 RabbitMQ(任何 *MQ 库)?
我目前正在考虑的是,在我们的平台上,用户生成的事件数量每天都在增加(通话开始、通话结束、通话记录准备好、用户被阻止等),所以什么时候应该是从 Symfony EventDispatcher 切换到更高效、更可扩展的东西?
如果我错了,请纠正我:Symfony EventDispatcher 将每个订阅者加载到服务器 RAM 中并保持它直到请求被处理?如果是,这意味着 2 个生成的事件将占用 RAM 中的 2x(所有订阅者类的总和)内存,这将导致我增加服务器 RAM,这将导致我支付更多费用,而不是使用有效的事件处理方法(libs,系统架构等)。
javascript - 从 JavaScript 中的自定义对象调度事件
是否可以在对象中创建自定义事件?像这样的东西
并在 mai.js 创建一个实例myCustomClass
使用此代码,我收到一条错误消息,告诉我这dispatchEvent
不是函数
javascript - 调度拖尾事件
我想以编程方式触发 d3-drag 的“结束”事件。我有一些圈子,并像这样实现它们的拖动处理:
现在,稍后在我的代码中,我想以编程方式触发它的“结束”部分。
我已经尝试过这样的事情:
javascript - javascript 为多个事件添加单个事件列表器,例如 ajax 函数回调成功、失败等
我想创建一个接受设置的 javascript 对象,并使用单个 addListener 函数提供多个事件。例如addListener({success: callback,fail:callback})
等。我希望我的要求很明确。