HTML5多線程之--同頁面的 Web Worker

通常情況下,Worker 載入的是一個單獨的 JavaScript 腳本文件,但是也可以載入與主線程在同一個網頁的代碼。

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>同頁面的 Web Worker</title>
</head>
<body>
  <script type="app/worker" id="worker">
  	//注意必須指定<script>標籤的type屬性是一個瀏覽器不認識的值
    onmessage = function(event) {
      console.log("收到主線程的數據:", event);
      postMessage("done!");
    }
  </script>

  <script>
    var blob = new Blob([document.querySelector("#worker").textContent]);
    var url = window.URL.createObjectURL(blob);
    var worker = new Worker(url);

    worker.onmessage = function(event) {
    	console.log("收到worker的數據:", event);
    	worker.terminate();
    };

    worker.postMessage("start");
  </script>
</body>
</html>

上面代碼中,先將嵌入網頁的腳本代碼,轉成一個二進制對象,然後爲這個二進制對象生成 URL,再讓 Worker 加載這個 URL。這樣就做到了,主線程和 Worker 的代碼都在同一個網頁上面。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章