JavaScript的一个特性就是单线程,web worker的出现解决了JavaScript无法多线程的问题,定义了“Worker”来执行代码的并行线程。
web worker有许多使用上的限制:
1、web worker中无法访问window对象和document对象。
2、和主线程直接的通信只能通过异步消息传递机制来实现。
3、不适宜创建很多的web worker;
web worker的使用:
1、通过Worker()构造函数创建一个新的Worker,传入指定执行JavaScript脚本文件即可;
var worker = new Worker('xxx.js');
2、web worker和主线程之间的通信。
(1) 主线程通过postMessage向worker发送消息;
worker.postMessage(data);
(2) 主线程通过onmessage接收worker发送的消息,event.data为worker返回的消息;
worker.onmessage = function (event) {
var data=event.data;
}
(3) 主线程关闭worker;
worker.terminate();
(4) 主线程对web worker 的错误监听;
worker.error=function(e){
}
(5) worker向主线程发送消息在是通过Worker上的postMessag()方法;
onmessage=function(event){
postMessage();
};
(6) worker接收主线程发送的消息在是通过Worker上的message事件监听的;
onmessage=function(event){
var data=event.data;
};
(7) worker关闭自身。
self.close();
3、worker中加载其他脚本文件,引入多个可以用逗号隔开。
importScripts('script1.js');