博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JS线程Web worker
阅读量:4614 次
发布时间:2019-06-09

本文共 1275 字,大约阅读时间需要 4 分钟。

Web worker简介:

HTML5定义了一种作为后台线程的WebWorker。 web worker是一个用来执行计算密集任务而不冻结用户界面的后台线程。

Web worker无法访问window对象和document对象,和主线程之间的通信也只能通过异步消息传递机制来实现。

Web worker 本身不是轻量级的线程,因而常见一些worker去处理次要的操作是不划算的

 

创建新的Worker:

var worker= new Worker("/assets/demo.js");

传递参数:

worker.postMessage("file.text");

接收消息:

worker.onmessage = function(e){   var message = e.data;   ......    }

Worker当然也支持addEventListener()方法和removeEventListener()方法,如果需要管理多个事件时可以使用哒

异常处理:

worker.onerror = function(e){  console.log("Error at " + e.filename + ":" +e.lineno + e.message );}

结束Worker

worker.terminate();

 

载入类和工具函数:

importScripts("utils/base64.js","utils/Map.js"....);

注意:importScripts是同步的方法,一旦importScripts方法返回就可以开始使用载入的脚本,不需要回调函数

案例:

            

 

用到的js:

demo_workers.js
var i = 0;function timedCount() {    var c = 0;    for (i = 0; i < 1000000000; i++) {        //计算的代码        c = 100 + i;    }    postMessage(c);    // setTimeout("timedCount()",500);//等候时间 (单位是千分之一秒, millisecond)}timedCount();

2.cal.js

onmessage = function(e) {     var data = e.data;     var c = 0;     for (i = 0; i < data; i++) {         //计算的代码         c = data + i;     }     postMessage(c + "---") }

 

 结果:使用Web worker

 

 没使用Web worker

 

 

参考地址:

转载于:https://www.cnblogs.com/chenze-Index/p/11454246.html

你可能感兴趣的文章
参数缓存缓存符号
查看>>
MySql逻辑备份恢复方法简单总结
查看>>
Spring AOP 实现原理
查看>>
山东大学计算机方向自主招生
查看>>
[hdu5200]离线+标记
查看>>
Java JFrame图形界面 ----一个简单的窗口
查看>>
Win7 64位系统上Hadoop单机模式的安装及开发环境搭建
查看>>
C#中的委托
查看>>
如何渲染几万条数据并不卡住界面
查看>>
玩具装箱 BZOJ 1010
查看>>
iOS的主要框架介绍
查看>>
Python 动态语言
查看>>
linux shell 字符串操作详解 (长度,读取,替换,截取,连接,对比,删除,位置 )...
查看>>
弹性盒布局
查看>>
Angular2 -- 生命周期
查看>>
重写与重载,背了八百遍终于明白了
查看>>
SQL逻辑查询处理顺序特别提醒
查看>>
HttpClient 教程 (一)
查看>>
【BZOJ】4671: 异或图
查看>>
【LOJ】#2115. 「HNOI2015」落忆枫音
查看>>