前面的話

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

 

前提

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

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

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

  使用Web Worker有以下幾點(diǎn)限制:

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

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

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

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

 

網(wǎng)友評(píng)論