web工作线程

HTML5的Web Worker特性让JavaScript能够开启后台线程,处理繁重的计算任务,避免阻塞用户界面。Web Worker分为专用线程(Dedicated Worker)和共享线程(Shared Worker)。专用线程适用于单个页面使用,通过`new Worker()`创建,使用`postMessage`和`onmessage`进行通信。共享线程可在同域多个页面间共享,使用`SharedWorker()`构造函数创建,同样通过消息传递进行通信。工作线程不能直接访问DOM或主线程中的变量,但可用于后台计算任务,提高用户体验。
摘要由CSDN通过智能技术生成

JavaScript一次只做一件事情,如果交给他太多的工作,他就会受不了,可能会受到一个Slow script的对话框,告诉你运行缓慢。而且只运行一个线程会占用大量计算能力,对你的用户界面或交互来说就所剩无几了,看上去缓慢甚至无响应。

HTML5增加了Web Worker。

Web Worker 的三大主要特征:能够长时间运行(响应),理想的启动性能以及理想的内存消耗。Web Worker 允许开发人员编写能够长时间运行而不被用户所中断的后台程序,去执行事务或者逻辑,并同时保证页面对用户的及时响应。

HTML5 之前的 JavaScript 的运行都是以单线程的方式工作的,虽然有多种方式实现了对多线程的模拟(例如:JavaScript 中的 setinterval 方法,setTimeout 方法等),但是在本质上程序的运行仍然是由 JavaScript 引擎以单线程调度的方式进行的。在 HTML5 中引入的工作线程使得浏览器端的 JavaScript 引擎可以并发地执行 JavaScript 代码,从而实现了对浏览器端多线程编程的良好支持。

工作线程无法访问主浏览器代码能够访问的很多运行时对象,比如DOM或主代码中的所有变量或函数。(为了高效)


专用线程Dedicated Worker

创建:

var worker=new Worker("worker.js");

发送消息:

worker.postMessage("ping");//发送字符串(可以发送数组,JSON对象,但是函数不行)

worker.postMessage({ 
  operation: 'list_all_users', 
  //ArrayBuffer object 
  input: buffer, 
  threshold: 0.8, 
 }, [buffer]);//为了高效地传输 ArrayBuffer 对象数据,需要在 postMessage 方法中的第二个参数中指定它

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值