国产成人精品亚洲777人妖,欧美日韩精品一区视频,最新亚洲国产,国产乱码精品一区二区亚洲

您的位置:首頁技術文章
文章詳情頁

javascript - node中的事件輪詢和異步代碼的執行

瀏覽:138日期:2023-04-07 17:47:35

問題描述

node的主線程執行js代碼,當是一個異步操作時,node會交給libuv去執行,然后會去執行異步后面的代碼。當libuv執行完后,會放入一個循環隊列中,libuv會有一個類似while(true)的事件循環(Event Loop),這個事件循環存在于node的單線程(也就是主線程),主線程循環取事件執行回調函數。那么主線程的循環取事件和執行異步后面的代碼是怎樣的一個過程?一個線程不可能同時做兩件事,是執行完異步后面的代碼,cpu空閑時才會去循環取事件嗎?

問題解答

回答1:

首先明確一點,主線程在有代碼執行時是不會去輪詢的。所以主線程會把所有的初始代碼(非回調代碼)執行完后再去事件隊列輪詢(事件隊列在被輪詢時可以看成一個js對象)因為理論上js引擎主線程,只能識別js代碼。但初始代碼執行完后,js主線程會去輪詢取事件,當取到一個回調函數后,js引擎會把當前回調代碼執行完后,才會在去輪詢。總結一下就是,只有js引擎在沒有代碼執行時,才會去進行輪詢,或者說,js主線程中永遠只有一個回調函數

回答2:

javascript - node中的事件輪詢和異步代碼的執行覺得這篇文章能解決你的疑惑

標簽: JavaScript
相關文章:
主站蜘蛛池模板: 姚安县| 栖霞市| 定西市| 乌拉特中旗| 都昌县| 安化县| 老河口市| 措美县| 夏邑县| 大埔县| 临西县| 聂荣县| 岐山县| 邹平县| 宁津县| 婺源县| 景宁| 宣武区| 从化市| 甘洛县| 阳朔县| 景东| 舞阳县| 宁明县| 南涧| 乌兰县| 泰州市| 五莲县| 保山市| 皋兰县| 长沙县| 三原县| 新余市| 曲周县| 呼玛县| 高阳县| 泾阳县| 利辛县| 绥德县| 沽源县| 崇仁县|