選單
×
   ❮     
HTML CSS JAVASCRIPT SQL PYTHON JAVA PHP HOW TO W3.CSS C C++ C# BOOTSTRAP REACT MYSQL JQUERY EXCEL XML DJANGO NUMPY PANDAS NODEJS R TYPESCRIPT ANGULAR GIT POSTGRESQL MONGODB ASP AI GO KOTLIN SASS VUE DSA GEN AI SCIPY AWS CYBERSECURITY DATA SCIENCE
     ❯   

HTML 教程

HTML 首頁 HTML 簡介 HTML 編輯器 HTML 基礎 HTML 元素 HTML 屬性 HTML 標題 HTML 段落 HTML 樣式 HTML 格式化 HTML 引用 HTML 註釋 HTML 顏色 HTML CSS HTML 連結 HTML 影像 HTML 收藏夾圖示 HTML 頁面標題 HTML 表格 HTML 列表 HTML 塊級 & 行內元素 HTML Div HTML 類 HTML Id HTML Iframe HTML JavaScript HTML 檔案路徑 HTML Head HTML 佈局 HTML 響應式設計 HTML 計算機程式碼 HTML 語義化 HTML 樣式指南 HTML 實體 HTML 符號 HTML 表情符號 HTML 字元集 HTML URL 編碼 HTML vs. XHTML

HTML 表單

HTML 表單 HTML 表單屬性 HTML 表單元素 HTML 輸入型別 HTML 輸入屬性 輸入表單屬性

HTML 圖形

HTML Canvas HTML SVG

HTML 媒體

HTML 媒體 HTML 影片 HTML 音訊 HTML 外掛 HTML YouTube

HTML API

HTML 地理定位 HTML 拖放 HTML Web 儲存 HTML Web Workers HTML SSE

HTML 示例

HTML 示例 HTML 編輯器 HTML 測驗 HTML 練習 HTML 網站 HTML 面試準備 HTML 新兵訓練營 HTML 證書 HTML 摘要 HTML 無障礙性

HTML 參考

HTML 標籤列表 HTML 屬性 HTML 全域性屬性 HTML 瀏覽器支援 HTML 事件 HTML 顏色 HTML Canvas HTML 音訊/影片 HTML 文件型別 HTML 字元集 HTML URL 編碼 HTML 語言程式碼 HTTP 訊息 HTTP 方法 PX 到 EM 轉換器 鍵盤快捷鍵

HTML Web Workers API


Web Worker 是一種在後臺執行的 JavaScript,不影響頁面效能。


什麼是 Web Worker?

在 HTML 頁面中執行指令碼時,頁面會變得無響應,直到指令碼完成。

Web Worker 是一種在後臺執行的 JavaScript,獨立於其他指令碼,不影響頁面效能。您可以繼續做任何您想做的事情:點選、選擇等等,而 Web Worker 在後臺執行。


瀏覽器支援

表中數字指定了完全支援 Web Workers 的第一個瀏覽器版本。

API
Web Workers 4.0 10.0 3.5 4.0 11.5

HTML Web Workers 示例

以下示例建立了一個簡單的 Web Worker,用於在後臺計數

示例

計數:

自己動手試一試 »

檢查 Web Worker 支援

在建立 Web Worker 之前,請檢查使用者的瀏覽器是否支援它

if (typeof(Worker) !== "undefined") {
  // 是的!支援 Web Worker!
  // 一些程式碼.....
} else {
  // 抱歉!不支援 Web Worker..
}


建立 Web Worker 檔案

現在,讓我們在外部 JavaScript 中建立我們的 Web Worker。

在這裡,我們建立一個計數指令碼。該指令碼儲存在 "demo_workers.js" 檔案中

var i = 0;

function timedCount() {
  i = i + 1;
  postMessage(i);
  setTimeout("timedCount()",500);
}

timedCount();

上面程式碼的重要部分是 postMessage() 方法 - 用於將訊息傳送回 HTML 頁面。

注意:通常 Web Worker 不用於此類簡單指令碼,而是用於 CPU 密集型任務。


建立 Web Worker 物件

現在我們有了 Web Worker 檔案,我們需要從 HTML 頁面呼叫它。

以下行檢查 Worker 是否已存在,如果不存在,則建立一個新的 Web Worker 物件並執行 "demo_workers.js" 中的程式碼

if (typeof(w) == "undefined") {
  w = new Worker("demo_workers.js");
}

然後我們可以從 Web Worker 傳送和接收訊息。

為 Web Worker 新增一個 "onmessage" 事件監聽器。

w.onmessage = function(event){
  document.getElementById("result").innerHTML = event.data;
};

當 Web Worker 釋出訊息時,事件監聽器中的程式碼將被執行。來自 Web Worker 的資料儲存在 event.data 中。


終止 Web Worker

建立 Web Worker 物件後,它將繼續監聽訊息(即使外部指令碼已完成),直到被終止。

要終止 Web Worker 並釋放瀏覽器/計算機資源,請使用 terminate() 方法

w.terminate();

重用 Web Worker

如果您在終止 Worker 變數後將其設定為 undefined,則可以重用程式碼

w = undefined;

完整的 Web Worker 示例程式碼

我們已經看到了 .js 檔案中的 Worker 程式碼。下面是 HTML 頁面的程式碼

示例

<!DOCTYPE html>
<html>
<body>

<p>計數: <output id="result"></output></p>
<button onclick="startWorker()">啟動 Worker</button>
<button onclick="stopWorker()">停止 Worker</button>

<script>
var w;

function startWorker() {
  if (typeof(Worker) !== "undefined") {
    if (typeof(w) == "undefined") {
      w = new Worker("demo_workers.js");
    }
    w.onmessage = function(event) {
      document.getElementById("result").innerHTML = event.data;
    };
  } else {
    document.getElementById("result").innerHTML = "抱歉!不支援 Web Worker。";
  }
}

function stopWorker() {
  w.terminate();
  w = undefined;
}
</script>

</body>
</html>
自己動手試一試 »

Web Workers 和 DOM

由於 Web Worker 位於外部檔案中,它們無法訪問以下 JavaScript 物件

  • window 物件
  • document 物件
  • parent 物件

×

聯絡銷售

如果您想將 W3Schools 服務用於教育機構、團隊或企業,請傳送電子郵件給我們
sales@w3schools.com

報告錯誤

如果您想報告錯誤,或想提出建議,請傳送電子郵件給我們
help@w3schools.com

W3Schools 經過最佳化,旨在方便學習和培訓。示例可能經過簡化,以提高閱讀和學習體驗。教程、參考資料和示例會不斷審查,以避免錯誤,但我們無法保證所有內容的完全正確性。使用 W3Schools 即表示您已閱讀並接受我們的使用條款Cookie 和隱私政策

版權所有 1999-2024 Refsnes Data。保留所有權利。W3Schools 由 W3.CSS 提供支援