js中的webworker学习

 WebWorker是H5中新增的API,我们使用这个API可以轻松的创建后台线程,webworker常用于执行那些耗费事件较长的逻辑计算或者大量循环,避免页面假死的发生。

webworker能为我们做什么:

1、加载一个JS文件,此文件用来进行大量计算,而不挂起主进程,通过postmessage,onmessage方法通信

2、使用importScript(url)加载其他的js文件

3、可以使用js的核心对象和部分浏览器属性

局限性:

1、不能跨域加载js   2、worker内不能访问dom,如需使用jquery,可加载jqnodom(

链接:

https://pan.baidu.com/s/1h-AC0PyM4EdXaZ68NPoCYw  提取码:0qou )插件使用jquery调用  3、加载数据效率没有ajax高

使用:

创建线程

var worker=new Worker("test.js");
worker.postMessage("hello"); //想test.js线程发送hello
worker.onmessage=function(e){
    console.log(e.data);
}//接受子线程的数据并打印,e是事件对象。e.data是默认子线程传过来的数据

线程test.js

onmessage=function(e){
    var data=e.data;
    postMessage(data);//将主线程发过来的数据发回到主线程
}

使用起来很简单

worker+ajax配合使用:

使用情景:

1、当项目中有多个后台接口数据较大时,可以开启一个线程。

2、当需要点击某按钮后连接后台获取大量数据或开启websocket时,可以开启一个线程。

onmessage = function (event) {
              $.ajax({
				url:"http://192.168.xx.xxx/test/",
				type:"POST",
				data:yourdata,
				dataType:"text",
				success:function(data,textStatus){
					postMessage({
						type:"data",
						msg:data
					});//postMessage发送一个对象
				},
				error:function(XMLHttpRequest,textStatus,errorThrown){
					console.log("Error:"+textStatus);
				}
			});

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值