There is no doubt that Javascript是没有多线程之说的,他只能一件事一件事的做,做完一件事再做下一件事,假如你的js要花一段比较长的时间做一件事的话,那么浏览器将会卡顿一段时间,不对用户的操作产生响应,这可咋办呢?谢天谢地,HTML5为我们提供了实现多线程的机制,这么好的东西,想必你早就再用了,不过没关系啊,咱们一块儿复习一下咯!
一、Worker类
1、方法介绍
(1)构造函数 new Worker(arg) :参数表示你的线程要执行的代码所在的js文件,例如‘myworker.js’,构造函数当然是返回一个Worker类的实例
//main.html
//thread1.js
Onmessage= function(event){
var res = event.data+"帅气!";
postMessage(res);
}
//thread2.js
Onmessage= function(event){
var res = event.data+"没骗你哟!";
postMessage(res);
close();
}
//main.html
//shared.js
Onconnect= function(e) {
var port = e.ports[0];
port.postMessage('Hello World!');
}
这是从w3c拿得一个例子,下面先看第二种方法,再做分析
//shared
Onconnect= function(e) {
var port = e.ports[0];
port.postMessage('Hello World!');
port.Onmessage= function(e) {
port.postMessage('pong'); // not e.ports[0].postMessage!
// e.target.postMessage('pong'); would work also
}
}