不! JavaScript 是一種單線程語言,這一點你沒有聽錯。它是一種單線程語言,它可以存取單一主線程來執行程式碼。因此,當我們談論同步編程時,我們談論的是這個單獨的線程執行所有繁重的工作並執行我們的程式碼。
但實際上,V8 引擎和 Node.js 使用名為 libuv 的 C 函式庫來存取六個額外執行緒。其中兩個用於進行垃圾收集,其餘的用於執行非同步程式設計等後台任務。
是的。當我們說程式碼是非同步或非阻塞時,真正發生的情況是非同步程式碼透過回呼傳遞給這些額外的線程,並且主線程繼續執行其工作而不會阻塞其餘程式碼。
當非同步程式碼完成時,回呼函數會被推送到事件佇列中,其中包含錯誤或所需的資料。然後事件循環將其推入呼叫堆疊,我們得到結果,透過一些程式碼來理解這一點。我們來看看fs模組的readfile方法。
fs.readFile("demo.text","utf8",(err,data)=>{ if(error){ return error } console.log("output",data); })
在上面的程式碼中,readfile 方法被傳遞到後台執行緒。讀取發生在後台,當讀取完成時,回調將被推送到帶有錯誤或資料的事件佇列中。
一旦進入呼叫堆疊,回呼就會被執行,我們要麼留下錯誤,要麼將資料作為輸出。
感謝您的閱讀,我希望我能夠解釋 Javascript 中的單線程方法。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3