单个线程如何处理Node.js中的异步代码?

Kodanda Rama Durgarao poluri

我想知道,即使回调已完成。如果节点是单线程模型,如何并行执行主线程上的回调和其他进程。

jfriend00

首先,回调不是并行执行的。一次只有一个线程执行Java脚本,因此没有实际的Java代码并行执行。您可以同时进行多个异步本机代码操作,但是当它们需要运行某种Javascript完成回调时,它们一次只能运行一次,而不是并行运行。

Javascript是一种事件驱动的语言,这意味着计时器,来自异步磁盘I / O的回调,来自网络操作的回调等都使用事件队列。当JS引擎完成执行一段JavaScript并将控制权返回给系统时,JS引擎将下一个事件从事件队列中拉出并执行。本机代码操作可以通过将事件插入事件队列中来表明它们已完成并希望运行回调。

对于诸如HTTP请求之类的异步操作http.get(),基本上是这样的:

  1. 您的JavaScript通话 http.get()
  2. 该调用将发送http请求,然后立即返回。传递给您的任何回调http.get()均由http模块内部存储,并与该特定网络请求相关联。
  3. 您的javascript代码会http.get()继续执行,直到完成为止,然后将控制权返回给系统。
  4. 然后,一段时间后,来自先前HTTP请求的响应将返回到TCP引擎。这将导致http模块在Javascript事件队列中插入一个事件,以调用您以前发送的完成回调http.get()
  5. 如果此时Javascript引擎没有执行任何其他操作,则将执行您的回调并传递结果响应数据。
  6. 如果此时Javascript引擎正在执行某项操作,则该事件将坐在事件队列中,直到当前正在执行的Javascript片段完成并将控制权返回给系统为止。那时,JS引擎检查事件队列,并从队列中拉出下一个事件并执行它。如果这是您的回调,则此时将调用您的回调。

因此,各种操作(例如异步磁盘I / O,网络操作等)可以在后台运行,因为它们是由本机代码(而不是Javascript引擎)控制的。如果需要,该本机代码可以使用线程。fs模块使用线程,而该net模块不使用线程,因为本机OS已经支持异步联网操作。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Swift中的异步线程-如何处理?

来自分类Dev

Node.js如何处理一个线程的同时请求?

来自分类Dev

Node.js - 如何处理测试文件中的异步模拟?

来自分类Dev

Lambda node.js中异步代码的意外执行

来自分类Dev

如何处理node.js casterror?

来自分类Dev

如何处理线程函数内的重复代码?

来自分类Dev

如何在Node.js和MongoDb中的javascript中混合同步和异步代码

来自分类Dev

如何处理flat_map中的单个元素?

来自分类Dev

如何处理跨线程操作中的错误

来自分类Dev

如何处理ZeroMQ + Ruby中的线程问题?

来自分类Dev

如何在Meteor.js Accounts.registerLoginHandler中处理异步代码

来自分类Dev

如何处理node.js中的循环?

来自分类Dev

如何处理Node.JS中的UnhandledPromiseRejectionWarning

来自分类Dev

如何处理 node.js 请求中的 URI 错误?

来自分类Dev

如何处理组件中的异步输入?

来自分类Dev

异步如何处理Javascript中的变量?

来自分类Dev

异步如何处理Javascript中的变量?

来自分类常见问题

异步中代码执行的顺序等待在Node.js中的函数中无法正常工作?

来自分类Dev

如何在Node.js中处理异步函数

来自分类Dev

如何在Node.js中处理异步函数

来自分类Dev

在WebStorm中为异步Node.js Mocha测试添加代码覆盖率

来自分类Dev

如何延迟或异步此 JS 脚本代码?

来自分类Dev

在node.js中初始化|| 如何处理node.js中的初始配置

来自分类Dev

Node.js-如何处理流错误事件

来自分类Dev

Node.js /如何处理连接泄漏?

来自分类Dev

node.js如何处理同时的http请求?

来自分类Dev

Node.JS如何处理重复的传递依赖项?

来自分类Dev

如何处理来自node.js的网页上的数据

来自分类Dev

Node.js如何处理未封闭的HTTP响应

Related 相关文章

热门标签

归档