web worker demo

1,195 阅读1分钟
主线程
var worker = new Worker('/jsteststatic/static/worker.js') //必须是网络路径,不能是本地路径
worker.postMessage('Hello World')
worker.postMessage({method: 'echo', args: ['Work']})
worker.onmessage = function (event) {
  console.log('Received message ' + event.data)
  // worker.terminate()  // 结束web worker 释放资源
} 

worker.js  中

var self = this
self.addEventListener('message', function (e) {
  self.postMessage('You said: ' + e.data)
}, false)

通信完成。

第二种本地web worker 

<script id="worker" type="app/worker">
  addEventListener('message', function () {
    postMessage('some message');
  }, false);
</script>
<script>
  var blob = new Blob([document.querySelector('#worker').textContent]);
  var url = window.URL.createObjectURL(blob);
  var worker = new Worker(url);
  console.log('w:'+worker)
  worker.postMessage('Hello index')
  worker.onmessage = function (e) {
    console.log(e.data)
  };
</script>

通信完成。

参考链接:http://www.ruanyifeng.com/blog/2018/07/web-worker.html