web worker原理

來源:互聯網
上載者:User

標籤:頁面   nat   接收   term   targe   一個   點擊   set   document   

什麼是 web worker? 

  我們一直強調JavaScript是單線程的,但是web worker的出現使得JavaScript可以在多線程上跑,只是web worker本身適合用於一些複雜的、耗費cpu的運算,不能操作window、document、parent對象,所以說本質上的JavaScript還是單線程的。

  這裡,我們僅僅舉一個簡單的例子,看看web worker是怎麼啟動並執行,畢竟是html5的規範,目前瀏覽器的支援還不是很好。

  web worker就是運行在背景JavaScript,獨立於其他指令碼,不會影響頁面的效能。您還可以做任意想做的事情,不會影響點擊等操作。

 

 

 

為什麼需要web worker?

  對於耗時而不操作DOM的JavaScript,我們就可以使用web worker,增強效能。 

 

 

web worker有什麼要注意的地方?  
  • 不是所有的瀏覽器都支援,使用前要檢查瀏覽器是否支援。 
  • web worker運行於外部檔案中,所以他們無法訪問下面的JavaScript對象。
  • 理解好 worker,worker在電腦領域通常被翻譯為線程或者是進程。而這裡的worker意義也是如此。 我們需要將之正確對待。 

 

 

web worker執行個體

建立worker.js外部檔案:

var i = 0; setInterval(function () {  postMessage(i++);}, 1000);

 

html檔案如下:

<!DOCTYPE html><html lang="en"><head>  <meta charset="UTF-8">  <title>Document</title></head><body>  <p>計數:<span id="result"></span></p>  <button onclick="start()">web worker開始工作</button>  <button onclick="stop()">web worker結束工作</button>  <script>    var w;    function start() {      if (typeof Worker != ‘undefined‘) {        w = new Worker(‘worker.js‘);        w.onmessage = function (event) {          document.getElementById(‘result‘).innerHTML = event.data;        }      } else {        document.getElementById(‘result‘).innerHTML = ‘您的瀏覽器不支援web worker‘;      }    }    function stop() {      w.terminate();      w = undefined;    }  </script></body></html>

即首先判斷:是否支援Worker建構函式,如果支援,就傳遞一個js檔案建立這個檔案的執行個體,然後就可以調用 message 事件,接收從 worker.js 中獲得的資料。 

注意: 必須在伺服器上測試,否則會有跨域問題。

最終,我就可以看到效果了。 

代碼地址: https://github.com/zzw918/cross-origin/tree/master/webWorker

  

 

  

  

web worker原理

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.