實時資訊 > 資訊詳情
關于Web Workers你需要了解的七件事
發布時間:2017-05-12 16:57:52

Web Workers允許你在后臺運行JavaScript代碼,而不會阻止web用戶界面。Web Workers可以提高網頁的整體性能,還可以增強用戶體驗。Web Workers有兩種風格 ——專用Web Workers和共享Web Workers。本文討論了你所需要知道的Web worker的七個關鍵方面,幫助你決定在應用程序中使用它們的話。
1.Web Workers允許你在后臺運行JavaScript代碼
通常,你在Web頁面中編寫的JavaScript代碼在與用戶界面相同的線程中執行。這就是為什么當你點擊一個會觸發漫長處理過程的按鈕,網頁的用戶界面會凍結。除非處理完成,否則你就無法工作于用戶界面。Web worker允許你在后臺執行JavaScript,以便用戶界面保持響應,即使同時正在執行某些腳本。執行腳本的后臺線程通常稱為worker thread或worker。你可以生成盡可能多的worker,只要你想。你還可以將數據傳遞到正在worker thread中執行的腳本,并在完成時將值返回到主線程。然而,Web Workers有一些限制,如下所示:
- Web Workers無法從web頁面訪問DOM元素。
- Web Workers無法從web頁面訪問全局變量和JavaScript函數。
- Web Workers不能調用alert()或confirm()函數。
- 不能在Web Workers中訪問諸如窗口,文檔和parent這樣的對象。
但是,你可以使用setTimeout(),setInterval()等函數。你也可以使用XMLHttpRequest對象向服務器發出Ajax請求。
2.Web Workers有兩種類型
Web Workers有兩種類型:專用Web Workers和共享Web Workers。專用Web Workers隨同創建它們的網頁一起存在和死亡。這意味著在網頁中創建的專用Web Workers無法通過多個網頁訪問。另一方面,共享Web Workers在多個網頁之間是共享的。Worker類代表專用Web Workers,而SharedWorker類代表共享Web Workers。
在許多情況下,專用Web Workers就可以滿足你的需求。這是因為通常你需要在worker thread中執行一個網頁的特定腳本。然而,有時,你需要在worker thread中執行一個腳本,并且這個worker thread對多個網頁通用。在這種情況下,創建許多專用Web Workers,每個頁面一個,還不如使用共享Web Workers。由一個網頁創建的共享web worker仍然可用于其他網頁。只有當所有到它的連接被關閉,才能毀壞它。共享Web Workers比專用Web Workers更復雜一點。
3.Worker對象代表專用Web Worker
現在,你了解了Web Workers的基礎知識,讓我們看看如何使用專用Web Workers。下面討論的示例假設你已使用喜歡的開發工具創建了一個Web應用程序,并且還在其Script文件夾中添加了jQuery和Modernizr庫。將HTML頁面添加到web應用程序,然后鍵入以下代碼:
上面的HTML頁面包含一個觸發一些JavaScript處理的按鈕(btnStart)。請注意,該網頁引用了Modernizr和jQuery庫。