理解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 相关文章推荐
IE7提供XMLHttpRequest对象为兼容
Mar 08 Javascript
根据鼠标的位置动态的控制层的位置
Nov 24 Javascript
URL地址中的#符号使用说明
Feb 12 Javascript
javascript字母大小写转换的4个函数详解
May 09 Javascript
Js实现手机发送验证码时按钮延迟操作
Jun 20 Javascript
JavaScript检测实例属性, 原型属性
Feb 04 Javascript
JS简单实现动画弹出层效果
May 05 Javascript
jQuery的内容过滤选择器学习教程
Apr 18 Javascript
微信小程序 后台https域名绑定和免费的https证书申请详解
Nov 10 Javascript
Node.js console控制台简单用法分析
Jan 04 Javascript
js实现左右轮播图
Jan 09 Javascript
node.js中对Event Loop事件循环的理解与应用实例分析
Feb 14 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
PHP安全配置详细说明
2011/09/26 PHP
WordPress过滤垃圾评论的几种主要方法小结
2016/07/11 PHP
php readfile()修改文件上传大小设置
2017/08/11 PHP
几行代码轻松搞定jquery实现flash8类似的连接效果
2007/05/03 Javascript
Jquery Validation插件防止重复提交表单的解决方法
2010/03/05 Javascript
js中string转int把String类型转化成int类型
2014/08/13 Javascript
Javascript数组操作函数总结
2015/02/05 Javascript
关于JS中match() 和 exec() 返回值和属性的测试
2016/03/21 Javascript
js数组与字符串常用方法总结
2017/01/13 Javascript
ES6新数据结构Set与WeakSet用法分析
2017/03/31 Javascript
详解vue的数据binding绑定原理
2017/04/12 Javascript
详解vue.js+UEditor集成 [前后端分离项目]
2017/07/07 Javascript
vue中v-show和v-if的异同及v-show用法
2019/06/06 Javascript
编写更好的JavaScript条件式和匹配条件的技巧(小结)
2019/06/27 Javascript
ES6对象操作实例详解
2020/05/23 Javascript
vue+springboot+element+vue-resource实现文件上传教程
2020/10/21 Javascript
pyqt4教程之实现windows窗口小示例分享
2014/03/07 Python
python基于Tkinter库实现简单文本编辑器实例
2015/05/05 Python
linux环境下python中MySQLdb模块的安装方法
2017/06/16 Python
Python3.6实现带有简单界面的有道翻译小程序
2019/04/16 Python
python读写csv文件实例代码
2019/07/05 Python
Python八皇后问题解答过程详解
2019/07/29 Python
使用pandas读取文件的实现
2019/07/31 Python
用Python解数独的方法示例
2019/10/24 Python
Python进行统计建模
2020/08/10 Python
浅析pandas随机排列与随机抽样
2021/01/22 Python
凯特·丝蓓英国官网:Kate Spade英国
2016/11/07 全球购物
Roxy俄罗斯官方网站:冲浪和滑雪板的一切
2020/06/20 全球购物
理工大学毕业生自荐信
2013/11/01 职场文书
残疾人小组计划书
2014/04/27 职场文书
政治表现评语
2014/05/04 职场文书
2014个人四风对照检查材料思想汇报
2014/09/18 职场文书
店铺转让协议书(2014版)
2014/09/23 职场文书
党的群众路线教育实践活动教师自我剖析材料
2014/10/09 职场文书
初中军训感想
2015/08/07 职场文书
SQL Server中的逻辑函数介绍
2022/05/25 SQL Server