簡體   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