html5入门教程(五)web Worker-多线程

一般来说Javascript和页面的UI会共用一个线程,当一段Javascript代码运行完毕之前,此时的浏览器反映就是:鼠标变成忙碌状态,点击页面没有任何反映。
通过使用Web Worker, 我们可以在浏览器后台运行Javascript, 而不占用浏览器自身线程。Web Worker可以提高应用的总体性能,并且提升用户体验。

注意,多线程在IE6、7、8、9下均不支持

示例图

worker分为两个部分,在主页面创建worker对象,并发送到js文件上
然后js对接收到的内容做出相应,在发送到创建worker对象的页面上。

创建worker对象的页面:

<script type="text/javascript">
      var box=document.getElementById("box");
      var work=new Worker("work1.js"); //创建worker对象 记住这个W一定要写成大写
      work.postMessage("hello world"); //使用 postMessage()方法 发送内容
      work.addEventListener("message",function(ev){  //message事件用于监听返回的内容
             var event=ev||window.event;
             box.innerHTML=event.data; //这里面的event.data就代表得到的返回内容
      },false)
</script>

执行worker的js

addEventListener("message",function(ev){
     var event=ev||window.event;
     console.log(event.data);
     //event.data 是页面传过来的数据
     var str="小明说"+event.data;
     postMessage(str); //多线程页面得到内容以后 也需要用同样的方法 再返回给主页面
},false)
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、概述 JavaScript 语言采用的是单线程模型,也就是说,所有任务只能在一个线程上完成,一次只能做一件事。...
    零星小雨_c84a阅读 2,500评论 0 2
  • 作者:阮一峰www.ruanyifeng.com/blog/2018/07/web-worker.html 概述 ...
    grain先森阅读 1,098评论 0 1
  • 面试题一:https://github.com/jimuyouyou/node-interview-questio...
    R_X阅读 1,638评论 0 5
  • 留侯张良者,固世之俊杰也,折冲樽俎之间而运筹帷幄之内,观其计诚天下奇诡之绝也。彼先少时血脉贲张,为先世效韩五世之故...
    倪瓒阅读 819评论 0 3
  • 学校要求整实习报告,也借机会给自己一年多的实习经历做个小结。 从大三开始步入公司实习,回头细数已经经历了4...
    小青年Neal阅读 1,580评论 2 28