[ javascript ] Web Workers - 多執行緒
subtitle.terminate( )
Sep 1, 2018 · 2 min read
javascript 是單一執行緒( Single Thread )的語言,當有太多事情要處理的時候就會影響到畫面呈現,甚至整個卡住。
Web Workers 可以讓 javascript 用到其它執行緒。
檢查瀏覽器是否支援
為避免錯誤,可以用判斷式檢查瀏覽器是否支援 Web Wrokers:
Method
Web Workers 的架構不算太複雜,大致上有四個 method 要記住:
Worker()用來創建 worker 物件postMessage()用來傳遞訊息onmessage用來接收訊息terminate()用來結束 worker,也可以在 worker 中使用close()將自己關掉。
實作
以下是一個小範例,由 main.js 傳 “Hello” 至 worker.js,將字串處理完之後再傳回 main.js 並且輸出( alert )。
執行完後瀏覽器會出現顯示 Hello World 的警告視窗。
使用限制
因為 Web Workers 屬於外部檔案,無法讀取以下內容:
window 物件
document 物件
parent 物件
因此像是 jQuery 這類跟 document 關聯性強的 library 就會無法使用。
