前面的話

  客戶端javascript其中一個基本的特性就是單線程:比如,瀏覽器無法同時運行兩個事件處理程序,它也無法在一個事件處理程序運行的時候觸發(fā)一個計時器。Web Worker是HTML5提供的一個javascript多線程解決方案,可以將一些大計算量的代碼交由web Worker運行從而避免阻塞用戶界面,在執(zhí)行復(fù)雜計算和數(shù)據(jù)處理時,這個API非常有用。本文將詳細介紹Web Worker

 

前提

  在使用Worker之前,首先要檢測瀏覽器是否支持這個API

  [注意]IE9-瀏覽器不支持

if (window.Worker) {  // to do }

  使用Web Worker有以下幾點限制:

  同域限制。子線程加載的腳本文件,必須與主線程的腳本文件在同一個域

  DOM限制。子線程所在的全局對象,與主進程不一樣,它無法讀取網(wǎng)頁的DOM對象,即document、window、parent這些對象,子線程都無法得到。(但是,navigator對象和location對象可以獲得。)

  腳本限制。子線程無法讀取網(wǎng)頁的全局變量和函數(shù),也不能執(zhí)行alert和confirm方法,不過可以執(zhí)行setInterval和setTimeout,以及使用XMLHttpRequest對象發(fā)出AJAX請求

  文件限制。子線程無法讀取本地文件,即子線程無法打開本機的文件系統(tǒng)(file://),它所加載的腳本,必須來自網(wǎng)絡(luò)

 

網(wǎng)友評論