HTML5 十大新特性(八)——Web Worker


  由於js是單線程的,所以H5添加了這個叫做webWorker的概念,允許js創建多個線程,但是子線程完全受主線程控制,且不能操作DOM,從而來處理一些比較耗時的操作。

  那么如何創建一個子線程呢?通過這么一個構造函數var worker = new Worker('worker.js');

  *常用的一些API:

  1、postMessage():用來在主線程和子線程間傳遞數據。

  2、terminate():終止子線程,無法再調用,除非另外重創。(worker.terminate();)

  3、message:消息發送時觸發,通過事件的data屬性獲得傳遞的數據。

  4、error:當出錯時觸發,通過事件的message屬性獲得錯誤信息。

  下面給出一個Demo:

    先是主線程界面:

    

    接着是worker.js界面:

    

    我們再來看下輸出結果:

    

  上面的這個demo其實已經能大致把一個webWorker的使用表達清楚了,額外補充下:

  1、可以在worker中可以通過importScripts(url)加載另外的腳本文件

  2、可以使用定時器的方法,但其余的DOM操作不支持

  3、可以使用AJAX發起請求

  4、可以訪問navigator的部分屬性

  5、不能跨域加載js文件

  6、各個瀏覽器的差異性,例:Firefox中支持worker中再建worker,Chrome不支持

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM