问题标签 [event-driven]

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 投票
3 回答
4592 浏览

excel - 在 Excel 电子表格中捕获 Click 事件

当用户单击单元格时,如何在 Excel 中捕获事件。我希望能够使用这个事件来触发一些代码来计算用户点击一列中几个不同单元格的次数。

0 投票
8 回答
7186 浏览

c++ - 事件驱动模拟类

我正在完成 Bjarne Stroustrup 在 The C++ Programming Language 中的一些练习。我对第 12 章末尾的问题 11 感到困惑:

(*5) 设计并实现一个用于编写事件驱动模拟的库。提示:<task.h>。...类任务的对象应该能够保存其状态并恢复该状态,以便它可以作为协程运行。特定任务可以定义为从任务派生的类的对象。一个任务要执行的程序可能被定义为一个虚函数。...应该有一个调度程序实现虚拟时间的概念。...任务需要沟通。为此设计一个班级队列。...

我不确定这到底是什么要求。任务是一个单独的线程吗?(据我所知,没有系统调用就不可能创建一个新线程,而且由于这是一本关于 C++ 的书,我不相信这是意图。)没有中断,如何启动和停止运行功能?我认为这将涉及忙等待(也就是说,不断循环并检查条件),尽管我看不出如何将其应用于可能在一段时间内不会终止的函数(例如,如果它包含无限循环) .

编辑:请在下面查看我的帖子以获取更多信息。

0 投票
6 回答
533 浏览

javascript - 你能让我轻松理解动态的抽象事件对象吗?

我已经使用 MFC 为 GUI 按钮编写了 C++ 事件驱动应用程序,并且我使用诸如 onmousedown 之类的 HTML 事件来触发网页中的一些 Javascript。当您使用界面并且事件是硬编码的时,事件驱动编程的想法很直观。

我知道如何在 C 中使用函数指针,并且了解 Windows 如何使用它们来运行事件循环。我可以编写代码来动态调用不同的函数。

我的问题是,从编译时转移到运行时。我在这里说的是任何语言,但是如果您需要一种语言,请选择 Javascript 或 PHP,因为这些天我最常使用它们。我完全不知道如何使用自己的事件对象来完成某事。这不是我得到的概念。而且由于我不使用它们,我不知道它们的实际用途可能是什么。

例如,我假设如果我想制作一个自定义的回合制游戏,我可能会使用事件对象来表示某个游戏片段能力的效果,该效果只需要“发生”。

有人可以给我简单地使用自定义事件吗?或者它有用或实用的情况?它是否很大程度上取决于语言和环境以及事件的处理方式?一个 Javascript 答案会很好,但我读过很多语言。

抱歉,我只是在这方面有欠缺,需要一些实用的、高级的(中级?)洞察力。这就像 C 中的指针。我“得到”指针以及它们如何成为你的朋友。但有一段时间我没有,我认识的很多人仍然没有。一旦你得到它就很简单,我只是不会以这种方式获得自定义的动态事件。

0 投票
5 回答
4571 浏览

windows - Win32 事件驱动编程是如何在底层实现的?

在 Win32 C++ 应用程序中,我们启动一个消息循环,从队列中获取消息,翻译它们,然后分派它们。最终,每条消息都会到达我们的 WndProc,在那里可以处理相关的事件。

我理解那部分。我不明白的是中间发生的事情。具体来说:

  1. 不同类型的 OS 中断处理程序必须将消息放入所述“消息队列”中,但是该队列驻留在进程地址空间的哪个位置?它是如何暴露给中断处理程序代码的?
  2. “翻译”信息是什么意思?调用的TranslateMessage()真正作用是什么?
  3. 一旦被发送DispatchMessage(),消息在到达我的 WndProc 之前会经过哪些地方(即操作系统如何处理它)?

如果有人知道以上问题的答案,请满足我的好奇心。谢谢。

0 投票
3 回答
4088 浏览

c++ - 使用 C++ 进行事件驱动的客户端/服务器设计

我正在设计一个具有脚本功能的游戏服务器。一般的设计是这样的:

现在最后一部分对我来说是最棘手的。

目前,我的设计允许我使用一个继承Client来创建对特定接收事件的回调的类。这些回调在一个列表中进行管理,每次接收到某些内容时,接收到的缓冲区都会经过一个解析过程。如果缓冲区有效,则调用回调函数,它作用于缓冲区中的内容。需要注意的一件事是回调可以传递到脚本引擎,此时无法确定会发生什么。

每次回调完成时,都必须重置当前接收缓冲区等。回调当前没有返回值的能力,因为如前所述,任何事情都可能发生。

发生的情况是,当回调中的某处说 this->disconnect() 时,我想立即断开连接Client,将其从 中删除EventManager,最后从 中删除Server,它也应该最终被破坏并释放内存。但是,在客户端中回调完成后,我仍然有一些代码在运行,因此我无法释放内存。

我应该在设计中改变什么?我应该在Server哪些检查哪些Clients 可以自由销毁中进行一些定时事件吗?这会产生我不需要的额外开销吗?回调完成后在堆栈(return -1;)上运行最少的代码是否仍然可以?

我不知道该怎么做,但我愿意接受全面的设计改造。

提前致谢。

0 投票
1 回答
562 浏览

performance - JBoss Seam - 应用程序中的海量消息传递

我目前正在使用具有与以下聊天类比匹配的设置的应用程序:

  • 聊天是保存在内存中并包含聊天消息列表的对象
  • 在多个浏览器窗口中呈现聊天,并使用 a4j:push 拉入更新

编程设置如下所示:聊天对象的实例及其消息在不同会话中的 PAGE 范围接缝组件之间共享。现在,当任何会话发布新消息时,即修改聊天对象时,应通知所有接缝组件新消息,以便可以将新状态中继到所有客户端的 UI。

我可以想到三种方法来实现这一点:

  1. Seam 以聊天 ID 作为参数的事件,然后每个组件检查 ID 并更新或忽略消息
  2. JMS 队列或一个 JMS 主题,其中每个组件使用过滤器进行侦听以仅用于聊天
  3. 共享聊天对象中的纯Java侦听器机制,即每个seam组件都注册到它,通知是纯Java直接的

为了便于讨论,假设聊天的数量很大(数万)而聊天用户的数量很小(比如说 2-10)。

每个规模的表现如何?您还有其他建议如何使用 Seam 实现这一点并表现良好吗?

正如我所看到的,(1)将被集成和清洁,但最终你会通知数以万计的组件,其中只有少数真正需要它。所以它可能不会扩展。

(2) 将被集成并且仅取决于 JMS 提供者(可以交换)的性能,并且也可以在集群环境中工作而无需修改。我不确定 JMS 在这里的性能,即每秒几百条消息和数千个具有不同过滤器的侦听器是否很多?

(3) 会很快,因为只会通知所需的组件,并且通知是纯 java 的。但是,由于跨会话/组件/线程完成了某些事情,可能会出现并发/访问问题。

对于 (1) 和 (3),如果在某些时候需要,必须手动添加支持集群的解决方案。

0 投票
2 回答
335 浏览

winapi - 使用 Win32 查看文件夹

我正在寻找一种使用 Win32(最低目标是 XP)来查看文件夹内容的简单方法。如果可能的话,最好使用事件驱动的方法而不是轮询类型的方法。更复杂的是,被监视的文件夹可能是网络共享。

我真的只对捕获“新文件”感兴趣。我不在乎我是否没有被告知重命名或删除的文件。

是否有事件驱动的方式,或者在处理 Win32 时轮询我唯一的选择?

0 投票
2 回答
441 浏览

flash - 学习事件驱动的 Flash 开发的好资源?

什么是好书/网站,您可以在其中学习 actionscript 中事件驱动编程的最佳实践(显然是 3 个)。

我有一个大项目即将进行,老实说,我的 flash 通常是一大堆课程,我不希望下一个变成一团头发的庞然大物。

0 投票
5 回答
6891 浏览

architecture - 了解事件驱动架构的好资源

寻找书籍、博客、网站或视频。

目前,我从 Udi Dahan 和 Greg Young 的博客中获得了很多价值,但我想知道是否还有其他专家值得一听?

0 投票
3 回答
23114 浏览

architecture - 什么是 SEDA(分阶段事件驱动架构)?

SEDA:条件良好、可扩展的互联网服务架构

“SEDA 是staged event-driven architecture的首字母缩写词,它将复杂的、事件驱动的应用程序分解为一组由队列连接的阶段。”

我知道它是一种架构,并且 SEDA 有很多实现(请参阅Wikipedia 文章)。什么是“舞台”?有人可以对分阶段事件驱动架构进行全面的高级总结,以及它与传统(非分阶段?)事件驱动架构有何不同?