JS为我们提供了一个Worker的类,它的作用就是为了解决阻塞的现象。当我们使用这个类的时候,它就会向浏览器申请一个新的线程。这个线程就用来单独执行一个js文件;
主线程接受:
var worker1 = new Worker('work1.js');
var worker2 = new Worker('work2.js');
var worker3 = new Worker('work3.js');
worker1.onmessage = function(){
//获取在新线程中执行的js文件发送的数据 用event.data接收数据
console.log( event.data )
};
worker2.onmessage = function(){
console.log( event.data )
};
worker3.onmessage = function(){
console.log( event.data )
};
setTimeout( function(){
worker.terminate();
//terminate方法用于关闭worker线程
},2000)
setTimeout( function(){
worker = new Worker("js/ccc.js");
//再次开启worker线程
},3000)
子线程发送:
work1.js
//postMessage(msg);
//postMessage方法把在新线程执行的结果发送到浏览器的js引擎线程里
self.postMessage('1111')
work2.js
self.postMessage('2222')
work3.js
self.postMessage('3333')