早期计算机浏览器是单核的,随着时代的发展计算机演变成了多核,这样如果还是使用单线程就会导致一些资源的浪费,所以HTML5的规范中提供了一个多线程的解决方案,这就是WEB-WORKER。
web workers 是运行在后台的JavaScript,独立于其他脚本,不会影响页面的性能。
浏览器支持
IE10及以上版本,Firefox,Chrome,Safari和Opera都支持WebWorker
一般会在使用前增加前置校验,检测当前浏览器版本是否支持
方法
postMessage():向html页面传递数据。
terminate():中止web workers,并释放浏览器/计算器资源。
事件
onmessage:监听通过postMessage方法发送过来的数据变化
// count.js文件
var contNum = 0;
function count(){
postMessage(contNum);
contNum++;
setTimeout(count,1000);
}
contNum()
//index.js文件
var numDiv;
window.onload = function(){
var work = new worker('count.js')
work.onmessage = function(e){
console.log(1)
}
work.terminate();
}
<html manifest='index.appcache'>
<script src='index.js'></script>
<body>
<h1>html5 wellcome</h1>
</body>
</html>
优缺点
优点
- 独立于主线程,不造成阻塞
- 非常适合处理高频、高延时的任务
- 可以内部做队列机制,做为延时任务的缓冲层
缺点
- 无法操作DOM,无法获取window, document等对象
- 遵守同源限制,并且加载脚本文件是阻塞的, Worker线程的脚本文件,必须于主线程同源。

被折叠的 条评论
为什么被折叠?



