html5的web workers中提供了在浏览器后台执行js的api,通过它我们可以将一些复杂的逻辑处理放在后台,而不影响主页面的加载,但是由于web worker位于外部文件中,导致它无法访问window,document,parent这些js对象。
在web worker中使用postmessage和onmessage进行通信,比如你可以在脚本中实现计算过程,然后将结果返回到主页面中。
//webworker.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>webwork</title>
<script type="text/javascript">
var worker=new Worker("webwork.js");
worker.postMessage("hello world");
worker.onmessage=function(event) {
console.log(event.data);
}
</script>
</head>
<body>
</body>
</html>
//webwork.js
onmessage=function(event) {
var d=event.data;//获取发送来的数据
postMessage(d);//将获取到的数据返回到主线程
}