理解JavaScript中worker事件api


Posted in Javascript onDecember 25, 2015

如果你不是很了解Event事件,建议先这篇文章《理解javascript中DOM事件》

首先,我们需要实例一个Worker的对象,浏览器会根据新创建的worker对象新开一个接口,此接口会处理客户端与indexedDB数据库之间的通信。这里的数据库是指浏览器数据库。如果,你需要判断浏览器是否支持worker对象,详见如下代码。或者浏览器是否支持indexedDB数据库,详见同下,二者判断最好选择前者。因为IE不支持indexedDB 。

if(window.Worker){ dosomething }
// Worker
window.indexedDB = window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB; 
if(!window.indexedDB){ dosomething }
// indexedDB

之后,worker对象会通过postMessage线程向indexedDB数据库发送数据,当indexedDB数据库接收到客户端发送的数据,首先把数据的键值储存并记录到indexedDB数据库表里面,其实相当于把数据保存在一张结构完整的表内。

于是,indexedDB数据库会把接收到的数据值扔给新接口处理,当新接口获得数据并解析之后,会通过postMessage扔回一条数据给数据库,数据库接收返回的数据处理的方式和上面一样,此时indexedDB数据库会把返回的数据扔给客户端接受参数的onmessage线程,主线程后面onmessage线程主要是接收传回的数据。

var txt1 = document.querySelector("#txt1");
var txt2 = document.querySelector("#txt2");

var result = document.querySelector("#result");
window.indexedDB = window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB;
 if(!window.indexedDB)
 {
  console.log("你的浏览器不支持IndexedDB");
 }
 if(window.Worker){
  var _this = new Worker("../../js/build/scroll_ten1.js");
  txt1.onchange = function(){ 
   _this.postMessage([txt1.value,txt2.value]); // e = [txt1.value,txt2.value]
   console.log("message post to work");
  }
  txt2.onchange = function(){
   _this.postMessage([txt1.value,txt2.value]); // e = [txt1.value,txt2.value]
   console.log("message post to work");
  }
  _this.onmessage = function(s){ //接收到的数据 e
   result.textContent = s.data;
  }
 }
onmessage = function(e){ //e接收Worker.postmessage传的参数
 var s = (e.data[2]*e.data[1]);
 var workerResult = "result : " + s;
 postMessage(workerResult); //Worker.onmessage进行回调workerResult参数
}

想必大家看了以上的分析之后,肯定在想用Worker能做什么?对于这个问题,目前能解决线程的非阻塞问题,如何说起,当用户改变browser的的尺寸、以及拖动浏览器时,主线程访问后台数据时,并不会中断数据之间的进程。

支持Worker的browser有哪些?

理解JavaScript中worker事件api

分享一个链接caniuse,通过这个工具你能更加全面的看到各个浏览器的(hack)。

// *注Worker的首字母必须是大写的

// *注Worker的脚本目录必须是HTML能够访问到的目录

以上就是本文的全部内容,希望对大家深入理解JavaScript中worker事件api有所帮助。

Javascript 相关文章推荐
从新浪弄下来的全屏广告代码 与使用说明
Mar 15 Javascript
浏览器兼容console对象的简要解决方案分享
Oct 24 Javascript
javascript调试之DOM断点调试法使用技巧分享
Apr 15 Javascript
jQuery实现选项联动轮播效果【附实例】
Apr 19 Javascript
JavaScript Math 对象常用方法总结
Apr 28 Javascript
d3.js实现简单的网络拓扑图实例代码
Nov 06 Javascript
详细介绍RxJS在Angular中的应用
Sep 23 Javascript
一文让你彻底搞清楚javascript中的require、import与export
Sep 24 Javascript
JS去掉字符串中所有的逗号
Oct 18 Javascript
AjaxFileUpload.js实现异步上传文件功能
Apr 19 Javascript
浅谈vue中使用编辑器vue-quill-editor踩过的坑
Aug 03 Javascript
微信小程序实现聊天室
Aug 21 Javascript
基于jquery实现省市区三级联动效果
Dec 25 #Javascript
js实现文本框输入文字个数限制代码
Dec 25 #Javascript
js实现简单的验证码
Dec 25 #Javascript
借助FileReader实现将文件编码为Base64后通过AJAX上传
Dec 24 #Javascript
javascript与jquery中的this关键字用法实例分析
Dec 24 #Javascript
JS实现部分HTML固定页面顶部随屏滚动效果
Dec 24 #Javascript
jQuery中hover与mouseover和mouseout的区别分析
Dec 24 #Javascript
You might like
PR值查询 | PageRank 查询
2006/12/20 PHP
php对数组内元素进行随机调换的方法
2015/05/12 PHP
php获取文章内容第一张图片的方法示例
2017/07/03 PHP
微信公众平台开发教程②微信端分享功能图文详解
2019/04/10 PHP
Javascript Math对象
2009/08/13 Javascript
JQuery 文本框使用小结
2010/05/22 Javascript
jQuery动态添加 input type=file的实现代码
2012/06/14 Javascript
简单的Jquery全选功能
2013/11/07 Javascript
页面实时更新时间的JS实例代码
2013/12/18 Javascript
jQuery.holdReady()使用方法
2014/05/20 Javascript
Javascript中常用类型的格式化方法小结
2016/12/26 Javascript
微信小程序 chooseImage选择图片或者拍照
2017/04/07 Javascript
详解Angular-Cli中引用第三方库
2017/05/21 Javascript
详解vue-cli本地环境API代理设置和解决跨域
2017/09/05 Javascript
js前端导出Excel的方法
2017/11/01 Javascript
JS控制鼠标拒绝点击某一按钮的实例
2017/12/29 Javascript
对angularJs中2种自定义服务的实例讲解
2018/09/30 Javascript
Vue列表渲染的示例代码
2018/11/01 Javascript
layui 对table中的数据进行转义的实例
2019/09/12 Javascript
JavaScript布尔运算符原理使用解析
2020/05/06 Javascript
vue select 获取value和lable操作
2020/08/28 Javascript
antd Select下拉菜单动态添加option里的内容操作
2020/11/02 Javascript
[01:04:35]2018DOTA2亚洲邀请赛 4.3 突围赛 Secret vs VG 第一场
2018/04/04 DOTA
[00:15]TI9地铁玩家打卡
2019/08/11 DOTA
Python中datetime常用时间处理方法
2015/06/15 Python
Python实现拷贝/删除文件夹的方法详解
2018/08/29 Python
python线性插值解析
2020/07/05 Python
利用CSS3动画实现圆圈由小变大向外扩散的效果实例
2018/09/10 HTML / CSS
3个CCIE对一个工程师的面试题
2012/05/06 面试题
领导干部培训感言
2014/01/23 职场文书
大学生军训感想
2014/02/16 职场文书
给市场的环保建议书
2014/05/14 职场文书
2014国庆节餐厅促销活动策划方案
2014/09/16 职场文书
教育项目合作协议书格式
2014/10/17 职场文书
2015年学校工作总结范文
2015/04/20 职场文书
2016年先进教师个人事迹材料
2016/02/26 职场文书