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

linux - 事件驱动和异步有什么区别?在 epoll 和 AIO 之间?

事件驱动和异步经常被用作同义词。两者之间有什么区别吗?

epoll另外,和 和有什么区别aio?它们是如何组合在一起的?

最后,我多次读到 Linux 中的 AIO 严重损坏。它到底是怎么破的?

谢谢。

0 投票
3 回答
922 浏览

javascript - Javascript中的异步背后是什么 - 事件驱动系统

请帮助我理解这一点。

您有一个调用几个方法的函数:

从没有回调或匿名函数的语言中,我习惯了这样一个事实,即在方法返回之前执行不会继续。

所以如果我用回调调用methodA,执行将不得不等到方法返回,这不会是异步的,对吧?

因此,例如,我可以将回调存储到某个对象并让 methodA 返回。然后执行methodB和methodC。当用户单击按钮时,某些处理程序会执行回调?

我得出的结论是,与 java 或 python 相比,javascript 没有任何异步(不涉及多线程)......因为在 java 中,回调不是闭包/匿名方法,而是具有“执行”方法的对象它会完全一样,只是稍微复杂一点......当然有这个 JS 事件系统特定于 DOM

0 投票
3 回答
1710 浏览

c - C中是否有任何简单/示例事件驱动的网络服务器?

网上有许多基于线程的 Web 服务器示例,但我还没有真正看到任何可以提供基于事件循环的良好示例的东西(不是很复杂,例如 lighttp 和 nginx)。

有吗?如果没有,我应该阅读/查看什么来帮助我学习如何制作这种服务器?(这包括 C 中的异步 IO 等)

我已经了解了基于事件循环的编程如何工作的基础知识,尤其是在 Python 等高级语言中,但我需要能够用 C 来实现。

0 投票
2 回答
903 浏览

ruby-on-rails - 异步、线程、node.js 和 Ruby on Rails

除了使用不同的脚本语言之外,node.js 的主要吸引力似乎在于它支持事件驱动的编程,这使得编写可扩展的服务器(或其他典型的 I/O 绑定应用程序)变得更容易,因为它简化了非阻塞 I/O 调用。但是,此功能的代价是必须学习一种新的编程模型,该模型本质上要求您在回调函数之后传递回调,从而使一些简单的任务(例如,相关的动作序列)变得更加复杂。

将该编程模型与传统的 Ruby on Rails 进行对比,后者阻塞所有 I/O 操作并且(有效地)是单线程的(由于 MRI 的绿色线程实现)。

只是在这里大声梦想,似乎应该可以实现一个 Ruby(或 Rails)运行时,它通过捕获 I/O 调用来协调这些模型,透明地用它们的非阻塞版本替换它们,存储当前的延续并调用它当 I/O 操作完成时。通过这种方式,您将获得熟悉的过程式编程风格以及事件驱动/异步/回调模型的好处。

这样的运行时(或运行时翻译器)在技术上是否可行?是否已经有网络框架可以做这样的事情?

0 投票
2 回答
1466 浏览

javascript - 如何使用事件驱动模型“不断尝试直到成功”?

我正在编写如下所示的代码:

基本上,继续尝试“doStuffWithCallback”,直到回调收到绿灯。通常,这将通过一个循环来完成,但是如果从未达到成功,我如何使用事件驱动模型来做到这一点而不会导致无限递归?(success可能依赖于外部服务器之类的东西,所以如果它们出现故障,它将一直是错误的)。

代码的结构不能改变太多;由于我使用的 API,我必须使用回调来完成我想要的。

0 投票
2 回答
2334 浏览

c++ - 编写基于控制台的 C++ IRC 客户端

我正在学习 C++,所以我决定开始编写 IRC 客户端。

我基本上希望它是基于控制台的,并且我已经查看了诸如 ncurses 之类的库,但我真的不知道这是否是最好的方法。

我想象 UI 被分成一个部分,无论写入什么消息都会出现,另一部分是用户输入的部分。Ncurses 似乎能够做到这一点,但现在我发现了另一个问题。

因为我希望消息部分是事件驱动的(每当有人发送消息时,这应该出现在消息部分中),所以 UI 的消息部分应该独立于输入部分运行。此外,套接字也必须是非阻塞的。

我在互联网上环顾四周,并没有找到任何好的教程,因为大多数教程要么非常非常老,要么写得不好,要么就是太长了。

无论如何,我的问题是,这将如何使用 ncurses 和套接字库来完成?他们是否有任何好的 C++ 包装器(我从阅读 ncurses 教程中学到的一件事是 OOP 真的很棒......)?

0 投票
3 回答
1796 浏览

javascript - node.js 在 Web 开发环境中的什么位置?

我知道 node.js 据说是托管在V8 Javascript 引擎上的“事件驱动 I/O”服务器端 javascript 。我访问了 node.js 网站,然后阅读了 wikipedia 条目,但无法完全了解在哪里使用它以及它将如何有用。“事件驱动的 IO”?“V8 Javascript 引擎”?不过,在某些情况下,我认为使用“服务器端”javascript 有点矫枉过正。我以node.js 的维基百科条目中的这段代码为例:

我一直在想,运行一个专门为在应用程序的前端部分执行的 javascript 文件提供服务的服务器真的有重要的目的吗?

我还在 github 上分叉了 node.js 存储库,以了解更多关于它是如何工作的,结果发现它的一些模块是用 C++ 编写的。那么它毕竟不是javascript吗?

有人可以给我一个关于这一切的明确解释吗?对不起,如果问题不清楚或什么,我只是一个初学者。将不胜感激任何输入/建议。谢谢

0 投票
1 回答
1360 浏览

c# - C# 事件驱动状态机需要使用 Windows.Forms.Timer 发布事件引发器

在我们遗留的 VB6 代码中,我们使用系统计时器来执行回调,以便状态机可以在不阻塞事件处理程序的情况下运行。一些伪代码示例

希望您了解在状态机中进行的某些调用,这将导致稍后触发事件处理程序,并设置一个计时器来执行回调,以便事件处理程序代码可以在我们继续下一个之前完成状态。

我在 C# 中继续使用类似的方法,但感觉不对,因为我确信该语言会提供一种更可爱的方式来做到这一点。由于我的 C# 状态机仍在调用在 UI 线程上引发事件的 VB6 对象,是否有更好的方法来“取消挂钩”事件处理程序,以便在状态机继续运行之前将其释放?

我想我可以使用 BeginInvoke 向泵添加一条消息以运行状态机,但在同一个线程而不是线程池线程上,但我的类不是表单或控件。我想我可以想出一个不使用计时器的解决方案,但是,它们使用起来非常简单,所以任何想法都会很棒。

0 投票
2 回答
406 浏览

python - 在 pygame 中将曲面闪烁到屏幕的正确顺序是什么?

我正在创建一个简单的 mp3 播放器,我的第一个任务是创建一个用户可以按下的简单按钮。我创建了一个名为 Button 的类,它处理此行为并检测用户是否单击它然后更改颜色。我现在正在尝试使用按钮显示的默认文本和另一个字符串(pres_string),如果按下按钮,将显示该字符串。

唯一的问题是我的背景表面似乎在错误的位置,并且正在绘制我所做的任何更改。

这是我的代码:

http://pastebin.com/Nh3yy01X

如您所见,我已经注释掉了我描述的行,并在主函数中使用基本变量进行了尝试,只是为了测试出了什么问题。

谢谢你的帮助。

(随意更改问题的标题,我不确定最准确地描述了我的问题)

0 投票
5 回答
3798 浏览

scala - 在 Scala 中,我如何将事件驱动编程与函数式方法结合起来?

为了澄清我所说的事件驱动的意思,我指的是我有

每次特定股票交易时都会调用它。假设我想跟踪每日最高交易价格。对我来说,显而易见的解决方案是:

有没有办法使用 val 而不是 var 来实现这个功能?还假设我将来可能想添加 dailyLow、volumeHigh、volumeLow 等。