Web Work,就是為JavaScript創造多線程環境,允許主線程創建Web Worker線程,將壹些任務分配給後臺運行。在主線程運行的同事,Work線程在後臺運行,兩者互不幹擾。等到Work線程完成計算任務再把結果返回給主線程。這樣的好處是,壹些密集或者高延遲的計算任務,被Work線程給分擔了,這樣主線程就會很流程。
Worker線程壹旦創建成功,就會始終運行,不會被主線程上的活動打斷取消。這樣有利於隨時響應主線程的通信。但是,這也造成了Worker比較耗費資源,不應該過度使用,所以壹旦使用完畢,就應該關閉。
1.同源限制:分配給Worker線程運行的腳本文件,必須與主線程的腳本文件同源。
2.DOM限制:Work線程所在的全局對象和主線程不壹樣,所以無法讀取主線程所在網頁的DOM對象,也無法使用document,window,parent這些對象。但是可以使用navigator和location。
3.通信聯系:Worker線程和主線程不在同壹個上下文環境,他們不能直接通信,必須通過消息完成。
4.腳本限制:Worker線程不能執行alert和confirm方法,但是可以使用XMLHttpRequest對象發出的AJAX請求。
5.文件限制:Work線程不能讀取本地文件,它所加載的腳本必須來自網絡。