问题标签 [event-driven-design]

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 回答
3702 浏览

events - 协程与事件驱动编程

关于维基百科中的例子: http ://en.wikipedia.org/wiki/Coroutine

我只是想知道传统的基于事件的方法可以处理这种使用模式,为什么需要使用协程?

0 投票
2 回答
1383 浏览

oracle - PL/SQL 中的事件驱动编程

我有两个 PL/SQL 系统,驻留在两个独立的数据库中。SystemA 将需要填充 SystemB 的表。这可能会通过数据链路完成。每次在 SystemB 的表中插入一组记录时,必须运行 SystemB 中的进程。我可以等待 SystemA 完成,然后运行脚本以开始在 SystemB 中处理,但由于 SystemA 可能会花费数小时处理然后填充 SystemB,我宁愿 SystemB 在每组记录可用时立即处理它们(每个set 可以独立于其他人进行处理,因此应该可以正常工作)。

我不确定如何在 PL/SQL 中进行偶数驱动编程。我需要 SystemA 通知 SystemB 一组已准备好进行处理。我的第一个想法是在 SystemB 中有一个特殊的“事件”表,然后当 SystemA 完成一个集合时,它会插入到“事件”表中,并且插入时有一个触发器启动该过程(并且该过程可能很长,每个进程可能需要 5-10 分钟)在 SystemB 中。我对 Oracle 中的触发器没有足够的经验来知道这是否是一种既定的方法,或者是否有更好的机制。建议?提示?建议?

0 投票
3 回答
2639 浏览

c++ - 多线程事件调度

我正在开发一个 C++ 应用程序,它将使用 Lua 脚本作为外部插件。附加组件完全是事件驱动的;加载脚本时向主机应用程序注册处理程序,并且主机在事件发生时调用处理程序。

我想要做的是让每个 Lua 脚本在自己的线程中运行,以防止脚本锁定主机应用程序。我目前的意图是分拆一个新线程来执行 Lua 代码,并在代码完成后允许线程自行终止。将新线程作为多线程事件分派的一种形式存在哪些潜在缺陷?

0 投票
4 回答
3908 浏览

android - 处理 UI 事件的最佳实践

我已将 UI 事件的所有绑定代码放在 OnCreate() 上。它使我的 OnCreate() 变得巨大。

在 android 中实现 UI 事件是否有模式?我可以在 View xml 文件中添加方法,然后我可以将所有处理程序代码放在其他地方。

简而言之,我想我在问如何使用 android 应用程序代码实现 MVVM 模式?

0 投票
3 回答
17641 浏览

php - PHP 中的事件驱动架构和钩子

我正计划开发一款具有 PHP 后端以与数据存储库通信的游戏。我正在考虑并得出结论,我们的游戏要遵循的最佳设计范式将是事件驱动的。我希望有一个成就系统(类似于本网站的徽章系统),基本上我希望能够将这些“成就检查”与游戏中发生的许多不同事件挂钩。IE:

当用户执行操作时,X 钩子 Y 被触发并调用所有附加函数来检查成就要求。

在构建这样的架构时,我将允许轻松添加新成就,因为我所要做的就是将检查功能添加到正确的挂钩中,其他一切都会到位。

我不确定这是否是对我打算做的事情的一个很好的解释,但无论如何我正在寻找以下内容:

  1. 关于如何编写事件驱动应用程序的良好参考资料
  2. 显示如何在 PHP 中的函数中放置“钩子”的代码片段
  3. 显示如何将函数附加到第 2 点中提到的“钩子”的代码片段

我对如何完成 2) 和 3) 有一些想法,但我希望精通此事的人可以阐明最佳实践。

先感谢您!

0 投票
1 回答
591 浏览

asynchronous - node.js 异步初始化问题

我正在创建一个 node.js 模块,它通过 XML-RPC 与程序通信。这个程序的 API 最近在某个版本之后发生了变化。出于这个原因,当创建客户端时(createClient),我想询问程序的版本(通过 XML-RPC),并以此为基础定义我的 API。

这样做的问题是,因为我是异步执行上述操作,所以在实际使用客户端之前工作可能还没有完成。换句话说:

doSomething()将失败,因为尚未设置 API 定义,我想是因为程序未返回 HTTP XML-RPC 响应。

有什么方法可以解决这个问题?我希望能够有一个名为的变量client并使用它,因为稍后我将调用它的方法来获取信息(将通过回调返回)。

0 投票
2 回答
3127 浏览

java - 如何在 Java 中创建“事件驱动”后台线程?

我喜欢将invokeLater()工作单元发送到 AWT EDT 的简单性。最好有一个类似的机制来将工作请求发送到后台线程(例如 SwingWorker),但据我了解,这些没有任何类型的事件队列和调度机制,这正是 invokeLater() 所依赖的。

因此,相反,我最终为我的后台线程提供了一个阻塞队列,其他线程向该队列发送消息,并且线程本质上运行一个接收循环,阻塞直到消息到达。

事实上,这可能正是人们在后台线程中实现类似 EDT 行为的方式(或者会这样吗?)。另一方面,我喜欢简单的线程,它只是惰性地悬挂在那里,每当它们碰巧从天空中一些看不见的事件调度队列被调度到它时处理“工作液滴”。Java 是否提供了一种方法来创建这种“事件驱动的工作线程”?还是消息队列是正确的方法呢?与此相关的是invokeLater(),消息传递技术是否存在缺点?

0 投票
1 回答
457 浏览

java - 将 Spring MVC 的控制器与 HTTPServlet 解耦

我使用 Spring 已经有一段时间了,我意识到并不是我在我的应用程序中收到的所有传入请求都是基于 HTTP 的。一些请求是基于电子邮件的,需要基于电子邮件的响应,其他请求是基于套接字的(当我的 NOSQL 存储中的值更改时接收通知)。所有这些,尽管使用或多或少相同的 MVC 基础设施。

因此,我认为重新架构应用程序以消除控制器和 HTTP 基础设施之间的耦合可能会有所帮助。

调度程序不应再直接调用控制器方法,而是提取请求参数,并使用它们创建抽象消息(或事件),然后将其放在消息总线上。另一方面,每个控制器都会为不同的事件订阅其动作(Action 类的实例 - 命令模式的实现)。

由于我对 Spring Integration、JMS 和其他类似的东西还很陌生,所以我不知道该选择哪种消息传递技术。另外,我很确定这样的架构已经开发出来了。也许,我什至可能都没有走上正轨。

我接受有关如何进行的各种建议。

0 投票
0 回答
85 浏览

php - 在 n 层架构中插入 ACL/ACE 的最佳位置(和时间)

由于我们需要在可扩展的 Web 架构中分离所有流程,特别是在事件驱动设计(同步和异步作业)中,我想知道插入 ACE 的最佳位置(也是最佳时间)在哪里。

我的第一个“幼稚”举措是将它们插入到创建相关对象的同一服务方法中。

它会是这样的:

但是,那是正确的地方吗?由于其他东西是在委托同步或异步工作的事件侦听器中处理的(离线队列),为什么不对 ACE 做同样的事情呢?

通常,在应用程序中,您始终确定需要立即完成的操作,以及可以(必须)离线完成的操作(队列)。

安全的东西在哪里?;-)

谢谢再见。

本杰明。

0 投票
1 回答
1082 浏览

event-driven-design - 如何在原生文本编辑应用程序中实现语法高亮?

我的背景是作为一名自学成才的 Web 开发人员。我习惯了请求/响应周期。但是,我越来越多地参与事件驱动编程(JavaScript、本机应用程序等)。我有一个想法,我想编写一个带有语法突出显示的本机文本编辑器(作为一种学习经验),但我意识到我对如何实现语法突出显示感到困惑。我习惯于使用一个常用的语法高亮库,在其中你给库一些文本,返回一个带有语法高亮的 HTML 版本。这不是普通文本编辑器/IDE 的工作方式。当您键入时,当编辑器意识到您正在尝试键入的内容时,字符会相应地突出显示。因此,从高级概述来看,如何实现语法突出显示。