web worker基本使用

前言

js是单线程 即所有任务只能在一个线程中完成。
Web Worker是为js创造多线程环境 
Worker 线程一旦新建成功,就会始终运行,
不会被主线程上的活动(比如用户点击按钮、提交表单)打断。
这样有利于随时响应主线程的通信。但是,这也造成了 Worker 比较耗费资源,
不应该过度使用,而且一旦使用完毕,就应该关闭

基本用法

主线程中new的方式调用Worker()构造函数,
新建一个 Worker 线程并传入线程文件地址
var worker = new Worker('work.js');

通过postMessage向子线程发送数据
通过监听message事件接收子线程发回来的消息
worket.postMessage({name:'jn'})
worker.addEventListener('message',function(e){
	...e.data
})
worker完成任务后 主线程需要将其关闭
worker.terminate();

worker.js:
	子线程中一样的监听message事件 获取信息,
	通过postMessage发送信息
	this.addEventListener('message',function(e){
		...e.data
		
		this.postMessage({result:111})
	})
	
	子线程中可使用self代表当前子线程 
	等同于上面的this
		self.addEventListener('message',function(e){
			...
		})
		
子线程内也可关闭线程 
self.close()

子线程中通过importScripts引入其他脚本
	importScripts('./a.js')

错误监听

主线程中可监听错误事件
worker.addEventListener('error',function(e){
	
})
http://www.ruanyifeng.com/blog/2018/07/web-worker.html
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值