html5 webWorker和nodejs


https://www.cnblogs.com/dolphinX/p/3452684.html

雖然在JavaScript中有setInterval和setTimeout函數使javaScript看起來好像使多線程執行,單實際上JavaScript使單線程的,一次只能做一件事情.詳見上面網址。

Web Workers

在html5規范中引入了web workers概念,解決客戶端JavaScript無法多線程的問題,其定義的worker是指代碼的並行線程,不過web worker處於一個自包含的環境中,無法訪問主線程的window對象和document對象,和主線程通信只能通過異步消息傳遞機制。(《JavaScript權威指南》)

可單線程的客戶端JavaScript也能響應DOM事件,還有大家都很熟悉的ajax操作,回調函數也是異步的,既然客戶端JavaScript是單線程執行的,回調函數是誰調用的呢?答案很簡單,JavaScript的宿主環境——瀏覽器,也就是說雖然JavaScript是單線程執行的,但瀏覽器是多線程的,負責調度管理JavaScript代碼,讓它們在恰當的時機執行。

所以我們所說的node.js單線程,是指node.js並沒有給我們創建一個線程的能力,所有我們自己寫的代碼都是單線程執行的,在同一時間內,只能執行我們寫的一句代碼。但宿主環境node.js並不是單線程的,它會維護一個執行隊列,循環檢測,調度JavaScript線程來執行。因此單線程執行和並發操作並不沖突。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM