

9.2.1 检查浏览器支持性
调用 **函数前要检查浏览器支持性,如果不支持提醒用户
if(typeof(Worker) === "undefined") 检测Worker值,就返回undefined
{提示}
else{}
页面初始化时调用判断的函数
9.2.2 创建Web Workers通信
初始化时可接收一个js文件的url,会设置事件监听器
worder = new Worker("echoWorker.js"); 创建web Worker
myWorker.onmessage = function(event){ 判断事件处理程序
alert();
}
importScripts();
importScripts('foo.js');
importScripts('foo.js','bar.js');
9.2.3 与Web Workers上机练习
使用后面后台线程不能访问,但可数据交互,
页面与webworker通信
document.getElementById("hello').onclick = function(){
worker.postMessage("hi,how");
}
worker.addEventListener("message",messageHandler, true);
function messageHandler(e){
}
webwoker不能中止,但可调用中止,中止后不能重新启用,但可重新创建新的
9.2.4 使用Web Workers上机练习
postMessage
addEventListener("error",errorHandler,true);
postMessage("ok"); 发送一个数据
9.3.1 使用多线程实现后台运算
在文本框输入数据值,在后台计算1到给定数字的和,当数值特别器的要用多线程
var worker = new worker("Sum....js")
不需要用等待一个完成后再执行另一个
9.3.2 在后台过滤值
传入后台,让线程处理,随机产生200个数组,通过并发实现,能够被3整除的值,
9.3.3 多任务并发处理
onmessage=functin(event)
var int Array= new Array(200);
for(var i=0;i<200;i++)
int array[i] = parseInt(Math.random()*200);
postMessage(returnStr) 传给主线程
close()关闭子线程
比上讲执行速度更快
9.3.4 在多线程之间通信
先创建发送数据的子线程,执行子线程上的程序,把数据发给主线程,再传给接收的子线程
创建主线程,
结果和前面示例相同的,执行效率更高
9.3.5 使用线程技术计算Fibonacci数列
以递归的方式定义,
var fibonacci = function(n){
return n <2?n : arguments.callee(n -1) +arguments.callee(n -2);
};
console.log('开始计算:40','时间'+timer);
var fibonacci = function(n) {
return n<2? n : arguments.callee(n -1) + arguments.callee(n -2);
}
以开发人员工具,Console能看到
9.3.6 使用多线程绘图
很复杂的绘图代码
可以指定线程数,线程数越多,执行越快
主页面
循环创建多个线程
9.4.2 编写应用主页面
。。。。。
9.4.3 编写Worker js
与页面通信的代码放在worker.js中
importScripts('annealing.js')
9.4.4 与Web Worker通信
在主页中用通过发送一些数据给worker
canvas.js中显示和输出图像