一、基本用法
参考博客:Web Worker 使用教程
最简单的demo:
main.js
var worker = new Worker('/resource/worker.js');
worker.postMessage('Hello World');
worker.onmessage = function (event) {
console.log('Received message ' + event.data);
};
worker.js
self.addEventListener('message', function (e) {
self.postMessage('You said: ' + e.data);
}, false);
二、注意事项:
1、向worker.js中postmessage(msg)的msg不能是那种复杂的对象,比如Cesium中的viewer就不能传入,否则会报错:
Uncaught DOMException: Failed to execute 'postMessage' on 'Worker':
function e(){
if(0<arguments.length){
if("function"===typeof f)
f.apply(g.sb,arguments);
else
throw Error("Cannot w...<omitted>...M} could not be cloned.
2、worker.js 的相对路径
Html中运行调用到main.js ,而main.js 中调用worker.js。此时main.js中调用的worker.js的相对路径
是相对于html文件而言的。也就是说,需要把worker.js放在html文件下,或者修改main.js调用worker.js
的路径。