西红柿爱番茄

Feed Rss

文章标签 ‘Web Worker’

2010-8-7 update:很悲剧的发现,Web Worker不支持跨域调用js文件。同时,经过测试,发现在Worker进程中的onmessage函数不能使用function onmessage(){}这种方式来声明,否则chrome、safari、opera不能执行它,切记~(实现Worker,FF比chrome、opera、safari兼容性好多了) 如果你使用window.onmessage=function(){}来声明onmessage方法,FF、Chrome等都提示window未定义的错误,这就很奇怪撂。难道Worker进程中不存在window这个对象? —————————– 更新分界线 —————————— javascript单线程任务式的运行代码,这是大家普遍都知道的事情,有时候为了模拟多线程,会使用setTimeout/setInterval的方式,但是这个并不能解决实质的问题。Web Worker — javascript的“多核”时代来了! Worker也已经出现的比较早了,记得当初首先是在Mozilla网站看到关于它的语法和特点介绍,今天在逛Opera看到了关于它的说明文档:Web Workers rise up!。觉得来详细的分析下它的原理是很有必要的了。下面是我对它的一点点看法: Web Worker的基本原理就是在当前javascript的主线程中,使用Worker类来独辟一个新的线程,来处理外联的一个javascript文件,起到互不阻塞执行的效果,并且提供主线程和新线程之间数据交换的接口:postMessage,onmessage。而它的数据交换方式有点类似于Ajax的异步请求,都是浏览器“暗地里”传输的。下面是我分析之后得出的一个流程图: