不! 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 中的單線程方法。
以上是JavaScript 不是單線程的!的詳細內容。更多資訊請關注PHP中文網其他相關文章!