H5新特性之webWorker
众所周知javascript是单线程语言,这就是js开发难度较低的原因了,因为不需要解决多线程的资源共享问题(例如死锁),但是单线程性能并不好,因此多了一个webWorker实现js的多线程来提升js的性能。
使用很简单,直接上代码:
var worker = new Worker('w.js'); worker.postMessage([5,8,12]); worker.onmessage = data=>{ alert(data.data); }
w.js:
this.onmessage = function(data){ this.postMessage(sum(data.data)); } function sum(arry){ return arry.reduce((temp,item)=>{ return temp+=item; }) }
主要用法就是:
1.new Worker('url~~~')
2.worker.postMessage(任意数据类型);
3.worker.onmessage=function(data){
// data.data 获取从postMessage的数据
}
w.js的用法也是一样,主要是this.postMessage和this.onmessage=(data)=>{}
ps:注意这个webMessage一定是异步的,而且感觉用处也不是太大,因为w.js不能操作的UI,只能用于计算,而前端的计算本来就不多,更多的计算都是UI相关的计算,但是偏偏webWorker不能对UI修改,显得这个新的对象显得有点鸡肋(如WebSQL一样,最近已被官方放弃)