在閱讀了大量關於NodeJS事件循環之後,我仍然有一個疑問。在我們的代碼中,如果NodeJS運行時發現任何異步調用,它將它推送到在後臺線程上運行的任務/消息隊列,並且V8繼續在主線程上執行我們的進一步代碼。一旦異步任務完成,節點將檢查調用堆棧是否爲空。如果調用堆棧是空的,那麼只有節點將該回調函數在主線程上進行處理。否則,它必須等到調用堆棧爲空。NodeJS事件循環內部工作
到目前爲止,我認爲,我是正確的。
懷疑:如果異步任務結束並且調用堆棧不爲空,則回調將需要等待調用堆棧變空。現在假設,如果我的調用堆棧中有太多的調用可能需要很多次(比異步任務要少完成),並且異步任務已經提前完成,那麼不必等待調用堆棧變空。
Node是否以這種方式設計,只有回調需要等待調用堆棧變空?