繁体   English   中英

为什么 NodeJs 被称为异步但 JavaScript 被称为同步?

[英]Why NodeJs is called Asynchronous but JavaScript is called Synchronous?

如果我们查看互联网,一些网站说 Javascript 是同步的,而 NodeJs 是异步的。

我们可以进行异步调用,并且可以在 JS 和 nodeJs 中使用 Promise,然后如何一个是同步的而另一个是异步的。 或者,如果我错了,那么两者都是同步的,或者都是异步的。

所以,我的问题是:

  • NodeJs 是同步的还是异步的?
  • javascript 是同步的还是异步的?

那些网站给你的信息不好。

JavaScript 引擎运行单个主事件循环。 它一次只能做一件事(即同步)。 如果它没有做任何事情,那么它将检查队列以查看是否有任何来自主事件循环之外的任务需要处理。 您编写的几乎所有 JavaScript 都将在该主事件循环上运行。

一些 JavaScript 将与在主事件循环之外执行操作的 API 交互。 示例包括:

  • 使用setTimeout将 function 排队以便稍后运行
  • 使用 API(如 web 浏览器和 node.js 提供的fetch )发出网络请求
  • 使用 API(如fs.readFile提供的 fs.readFile 或 web 浏览器提供的FileReader )读取文件。
  • 使用工作线程(节点)或 web 工作线程(浏览器)在主事件循环之外运行 JS 并监听从它返回的消息

这些是异步的(因为您调用触发它们的 JS function只会触发它们;它不会暂停主事件循环以等待响应)。

异步 API 并不是 Node.js 独有的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM