主线程js

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//创建worker对象,参数为需线程执行的js文件
var worker = new Worker('new.js');
var ar=new Array();
var obj=new Object();
obj.s="123";
ar[0]=obj;
ar[1]="1234"
//想new.js发送数据
worker.postMessage(ar);
//接收worker传递过来的数据
worker.onmessage = function(data){
//输出传回的数据
console.log(data.data);
worker.terminate();//终止线程
};

支线程new.js

1
2
3
4
5
//监听主线程消息
onmessage=function(data) {
//向主线程发送消息
postMessage(data.data[1]);
}

Worker有局限性,它不能操作DOM,否则会出现如下错误,就算加进去了也是一个副本
Uncaught DataCloneError: Failed to execute ‘postMessage’ on ‘Worker’: An object could not be cloned.