什么是Web Worker?
web worker 是運行在后臺的 JavaScript,不占用瀏覽器自身線程,獨立于其他腳本,可以提高應用的總體性能,并且提升用戶體驗。
一般來說Javascript和UI頁面會共用一個線程,在HTML頁面中執(zhí)行js腳本時,頁面的狀態(tài)是不可響應的,直到腳本已完成。而這段代碼可以交給Web Worker在后臺運行,那么頁面在Javascript運行期間依然可以響應用戶操作。后臺會啟動一個worker線程來執(zhí)行這段代碼,用戶可以創(chuàng)建多個worker線程。
有兩種 Web Worker
Web workers可分為兩種類型:專用線程dedicated web worker,以及共享線程shared web worker。 Dedicated web worker隨當前頁面的關閉而結束;這意味著Dedicated web worker只能被創(chuàng)建它的頁面訪問。與之相對應的Shared web worker可以被多個頁面訪問。在Javascript代碼中,“Work”類型代表Dedicated web worker,而“SharedWorker”類型代表Shared web worker。
在絕大多數情況下,使用Dedicated web worker就足夠了,因為一般來說在web worker中運行的代碼是專為當前頁面服務的。而在一些特定情況下,web worker可能運行的是更為普遍性的代碼,可以為多個頁面服務。在這種情況下,我們會創(chuàng)建一個共享線程的Shared web worker,它可以被與之相關聯的多個頁面訪問,只有當所有關聯的的頁面都關閉的時候,該Shared web worker才會結束。相對Dedicated web worker,shared web worker稍微復雜些。
new Worker()對象代表Dedicated Web Worker,以下示例代碼都為Dedicated Web Worker。
如何創(chuàng)建 Web Worker?