91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

nodejs事件循環是什么

發布時間:2022-11-28 09:24:22 來源:億速云 閱讀:90 作者:iii 欄目:web開發

這篇文章主要講解了“nodejs事件循環是什么”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“nodejs事件循環是什么”吧!

我們都聽說過 JavaScript 和 Node.js 是單線程的,但實際上這意味著什么?

nodejs事件循環是什么

這意味著 JavaScript 一次只能做一件事。 例如,我們不能同時將數字相乘和相加。我們通常按順序進行操作。我們相加然后相乘,反之亦然。現代計算機速度很快,兩個或多個連續任務的結果似乎是同時計算的,但也有例外。

我們都曾嘗試從那個緩慢的網站上抓取數據,或者在獲得數據庫查詢結果之前等待了 30 多秒。我們是否想因為數據庫查詢速度慢而阻止單線程執行更多任務?然而,Node.js 并沒有停止運行其他操作,因為 Libuv 是一個 C++ 庫,負責事件循環和異步處理網絡請求、DNS 解析、文件系統操作、數據加密等任務。

當 Node.js 處理諸如數據庫查詢之類的任務時,幕后會發生什么?我們將按照這段代碼一步一步來探索它。

這是我們的示例代碼

nodejs事件循環是什么

V8 JavaScript 引擎管理調用堆棧,這是跟蹤我們程序的哪個部分正在運行的重要部分。每當我們調用 JavaScript 函數時,它都會被推送到調用堆棧。一旦函數到達其結尾或return語句,它就會從堆棧中彈出。

在我們的示例中,代碼行 console.log('Starting Node.js') 被添加到調用堆棧并打印 Starting Node.js 到控制臺。通過這樣做,它到達log函數的末尾并從調用堆棧中刪除。

nodejs事件循環是什么

以下代碼行是一個數據庫查詢。這些任務會立即彈出,因為它們可能需要很長時間。它們被傳遞給 Libuv,后者在后臺異步處理它們。同時,Node.js 可以在不阻塞其單線程的情況下繼續運行其他代碼。

將來,Node.js 將知道如何處理查詢,因為我們已將回調函數與處理任務結果或錯誤的指令相關聯。在我們的例子中,它是一個簡單的 console.log,但它可能是復雜的業務邏輯或生產應用程序中的數據處理。

nodejs事件循環是什么

當 Libuv 在后臺處理查詢時,我們的 JavaScript 沒有被阻塞,可以繼續使用 console.log(”Before query result”).

nodejs事件循環是什么

查詢完成后,它的回調將被推送到 I/O 事件隊列以立即運行*   * 事件循環將隊列與調用堆棧連接起來。它檢查后者是否為空并移動第一個隊列項以執行。

nodejs事件循環是什么

事件循環上的小測驗

嘗試找出控制臺上打印的以下代碼。

nodejs事件循環是什么

感謝各位的閱讀,以上就是“nodejs事件循環是什么”的內容了,經過本文的學習后,相信大家對nodejs事件循環是什么這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

陈巴尔虎旗| 法库县| 营山县| 江安县| 安庆市| 苗栗县| 会泽县| 双峰县| 定南县| 西乌珠穆沁旗| 桑植县| 金门县| 义乌市| 成安县| 辉县市| 衡水市| 醴陵市| 青阳县| 大理市| 平定县| 彭泽县| 鹤峰县| 隆安县| 成都市| 石门县| 太仆寺旗| 惠安县| 潍坊市| 泰兴市| 黎城县| 那曲县| 兴业县| 沂源县| 安平县| 海南省| 马鞍山市| 和林格尔县| 梅河口市| 陈巴尔虎旗| 洛隆县| 康平县|