Javascript 最初是設計在瀏覽器上執行的語言,而瀏覽器上會有各種的使用者操作,像是輸入文字、點擊按鈕等,這些操作最終都會反映在畫面上的渲染,為了維持畫面上渲染的一致性,Javascript 一開始就是設計成單線程的。但隨著 WebGL 的逐步成熟,在即時 3D 渲染的場景,網頁與 GPU 間需要有大量的資料傳遞,而此時如果繼續只依靠單線程的方式,當運算資源不足時,就有可能出現畫面卡頓的現象造成使用者的體驗不佳。此時就需要 Web worker 在正常 UI 渲染的主線程外,創建另一個 worker 線程,worker 線程可以單獨在背景運算而不會影響到主線程的操作。
const worker = new Worker('worker.js');
const worker = new SharedWorker("worker.js");
Web worker 通常使用在有大量資料需要運算時的場景,另開一個 worker 線程把資料丟過去並行處理,避免主線程資源負載過重,導致畫面阻塞影響使用者體驗。
Web Worker 使用教程
Using Web Workers
Javascript 之單線程