HEML5 Worker用法笔记

Web Workers 是 HTML5 提供的一个javascript多线程解决方案,我们可以将一些大计算量的代码交由web Worker运行;Web Worker的基本原理就是在当前javascript的主线程中,使用Worker类加载一个javascript文件来开辟一个新的线程,起到互不阻塞执行的效果

1.如何使用Worker呢?

首先,我们要知道,Worker提供的接口有哪些:

(1)主线程和新线程之间数据交换的接口:postMessage,onmessage。

实例对象worker.onmessage(function(e){});worker.postMessage(data);

全局方法onmessage = function(e){};postMessage(data);

到底怎么使用呢?光说不练,就是混蛋,例子如下:

//worker.js
onmessage =function (evt){
  var d = evt.data;//通过evt.data获得发送来的数据


  comsole.log(d);
  postMessage( "你好,主线程" );//将获取到的数据发送会主线程
}




在html页面中:



<!DOCTYPE HTML>
<html>
<head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
 <script type="text/javascript">
    //WEB页主线程
      var worker =new Worker("worker.js");        // 创建一个Worker对象并向它传递将在新线程中执行的脚本的URL,就是上边的worker.js。
         worker.postMessage("你好,子线程");       // 向worker发送数据
         worker.onmessage =function(evt){         // 接收worker传过来的数据函数
              console.log(evt.data);              // 输出worker发送来的数据
         }
 </script>
 </head>
 <body></body>
</html>

WEB主线程:

1.通过 worker = new Worker( url ) 加载一个JS文件(即子线程)来创建一个worker,同时返回一个worker实例。

2.通过worker.postMessage( data ) 方法来向worker发送数据。

3.绑定worker.onmessage方法来接收worker发送过来的数据。

4.可以使用 worker.terminate() 来终止一个worker的执行。

worker子线程:

1.通过postMessage( data ) 方法来向主线程发送数据。

2.绑定onmessage方法来接收主线程发送过来的数据。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值