gpt4 book ai didi

javascript - JavaScript 中的事件循环和 Node.js 中的异步非阻塞 I/O 有什么区别?

转载 作者:行者123 更新时间:2023-12-05 00:24:37 27 4
gpt4 key购买 nike

在这个 answer对于这个问题 -

What is non-blocking or asynchronous I/O in Node.js?


描述听起来与 vanilla js 中的事件循环没有什么不同。两者有区别吗?如果不是,事件循环是否只是简单地重新命名为“异步非阻塞 I/O”,以便更轻松地销售 Node.js 而不是其他选项?

最佳答案

事件循环是机制。异步 I/O 是目标。
异步 I/O 是一种编程风格,其中 I/O 调用在返回之前不等待操作完成,而只是安排在发生这种情况时通知调用者,并将结果返回到某个地方。在 JavaScript 中,通知通常通过调用回调或解决 promise 来执行。就程序员而言,这是如何发生的并不重要:它就是这样。我请求手术,完成后,我会收到通知。
事件循环通常是如何实现的。问题是,在大多数 JavaScript 实现中,确实存在一个循环,最终归结为:

while (poll_event(&ev)) {
dispatch_event(&ev);
}
然后通过安排操作的完成作为该循环接收的事件来完成异步操作,并将其分派(dispatch)给调用者选择的回调。
有一些方法可以实现不基于事件循环的异步编程,例如使用线程和条件变量。但是历史原因使得这种编程风格很难在 JavaScript 中实现。所以在实践中,JavaScript 中异步的主要实现是基于从全局事件循环中调度回调。
换句话说,“事件循环”描述了主机做什么,而“异步 I/O”描述了程序员做什么。
从非程序员的鸟瞰 Angular 来看,这可能看起来像 split 的头发,但这种区别有时很重要。

关于javascript - JavaScript 中的事件循环和 Node.js 中的异步非阻塞 I/O 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70201005/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com