JavaScript採用的是單線程模式,它每次也只能執行一個事件,所以它在載入大量的事件的時候會比較慢。 而web-worker的作用就是給JavaScript提供一個多線程的模式。 註意的是 web-worker是無法操作DOM的節點的,它不能再主線程中調用的子線程中的函數,並且只能使用原生js進 ...
JavaScript採用的是單線程模式,它每次也只能執行一個事件,所以它在載入大量的事件的時候會比較慢。
而web-worker的作用就是給JavaScript提供一個多線程的模式。
註意的是
web-worker是無法操作DOM的節點的,它不能再主線程中調用的子線程中的函數,並且只能使用原生js進行編寫。
還有web-worker我在網上看見說是在部分瀏覽器裡面是無效的,我在電腦上Google及Safari(電腦上僅有這兩個瀏覽器╮( ̄▽ ̄)╭)上面測試了一下是沒有問題的。
web-worker的使用
創建主線程
使用new來創建一個worker的函數,
var worker = new Worker("./work.js")
然後使用worker.postMessage('...')向子線程方式數據
接收子線程的數據
worker.onmessage = function(){ console.log(event.data) }
子線程
在主線程中想子線程發佈的數據使用
onmessage =function (event){ var mar_skt = event.data; //通過event.data獲得發送來的數據 console.log(mar_skt); //列印數據 }
然後在使用postMessage向主線程發生在子線程內容執行完畢的內容
postMessage(data)
在不想要worker的時候也可以直接使用terminate()來結束它
worker.terminate();