簡體   English   中英

NodeJS:調用異步函數時,異步工作是誰?

[英]NodeJS: Who does the asynchronous work when a async function is called?

我將用例子解釋我的問題。

fs.readFile('somefilename', function(err, data) {
    ...doSomething...
});

當執行這行代碼時, readFile將開始讀取該文件。 成功或失敗時,此回調將被推送到隊列中以使用適當的參數執行。

讀取文件是asynchronously發生的,但是如果NodeJS是單線程的,非阻塞的,那么誰在做呢?

用戶代碼在單個線程中執行。 但是,幕后的nodejs使用libuv / libio來處理任何使用線程的io。

https://github.com/libuv/libuv

有趣的帖子:
單線程非阻塞IO模型如何在Node.js中工作
node.js是否在內部使用線程/線程池?
為什么Node.js是單線程的?

我自己會向你解釋這個,但是這個視頻可以更好地解釋Javascript事件循環。

Node.js是一個事件驅動的服務器。 它並不意味着它使用多線程。

作為事件驅動,Node.js可以同時處理多個請求。 基本上,當它收到請求時,Node.js會啟動它的執行。 在執行時,Node.js接收另一個請求,它將啟動它的執行。 等等。 當第一個請求完成並且結果可用時,它會觸發一個事件,通知Node.js此請求已完成,然后Node.js發送回請求結果。

更多信息可以在Node.js網站上找到,更多信息可以在這里找到

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM