javascript - 单线程应用程序如何成为异步 nodejs
问题描述
Node js 是一个单线程应用程序,尽管它执行异步操作,但我最初对此的理解是这样的“事件循环在用户代码中的单独线程中运行。用户的 JavaScript 代码(用户空间代码)运行在一个主线程中,另一个运行事件循环。每次异步操作发生时,主线程都会将工作交给事件循环线程,一旦完成,事件循环线程会ping主线程执行回调。” 这篇文章向我解释了这是错误的。https://www.freecodecamp.org/news/walking-inside-nodejs-event-loop-85caeca391a9/
另外,我看到在第一部分执行后有一些代码返回结果,即使该部分是在第一部分之后调用的。我在这里变得非常困惑,有人可以帮助我吗?
libuv与此有什么关系?
解决方案
单线程意味着事件队列在单线程中运行。在后台还有其他线程运行诸如 IO 之类的作业。他们有一个线程池,但作为开发人员,你对它的内部不感兴趣。这简化了应用程序开发人员对阻塞 IO 任务的处理。您只需发送一个请求并注册您的任务结果并在回调中运行您的代码。
推荐阅读
- rust - How to I explicitly assign a type to an `Option
` that is used in a `match`? - hostapd - 使用 hostapd 的最大站数
- microsoft-edge-extension - 为Edge Browser开发的扩展如何打包上传?
- java - 如何减小图像原始大小?
- android - 谷歌地图根本没有加载,没有任何错误
- salt-stack - 存储库未签名以在 Ubuntu 上安装软件包
- java - 如何在我的 Ubuntu 服务器中启用会话
- python - 带有 CMake 和 SetupTools 的 Python 2.7 C++ 扩展?
- c++ - ks.h、ksmedia.h 和 ksproxy.h 的依赖关系错误
- .net - c# automapper 嵌套对象到平面对象列表