理解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 相关文章推荐
jquery ajax 如何向jsp提交表单数据
Aug 23 Javascript
javascript插件开发的一些感想和心得
Feb 28 Javascript
详解BootStrap中Affix控件的使用及保持布局的美观的方法
Jul 08 Javascript
值得分享的bootstrap table实例
Sep 22 Javascript
微信小程序 在Chrome浏览器上运行以及WebStorm的使用
Sep 27 Javascript
Javascript 实现微信分享(QQ、朋友圈、分享给朋友)
Oct 21 Javascript
JS实现点击网页判断是否安装app并打开否则跳转app store
Nov 18 Javascript
JS调用Android、Ios原生控件
Jan 06 Javascript
Angular2安装angular-cli
May 21 Javascript
如何从零开始手写Koa2框架
Mar 22 Javascript
TypeScript类型声明书写详解
Aug 28 Javascript
vue 自定义组件添加原生事件
Apr 21 Vue.js
基于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安全编程之加密功能
2006/10/09 PHP
php error_log 函数的使用
2009/04/13 PHP
Zend Studio去除编辑器的语法警告设置方法
2012/10/24 PHP
php图片加中文水印实现代码分享
2012/10/31 PHP
javascript 基础篇2 数据类型,语句,函数
2012/03/14 Javascript
jQuery的观察者模式详解
2014/12/22 Javascript
javascript DIV实现跟随鼠标移动
2020/03/19 Javascript
JS控制HTML元素的显示和隐藏的两种方法
2016/09/27 Javascript
有关文件上传 非ajax提交 得到后台数据问题
2016/10/12 Javascript
JS验证input输入框(字母,数字,符号,中文)
2017/03/23 Javascript
微信小程序 支付后台java实现实例
2017/05/09 Javascript
微信小程序之swiper轮播图中的图片自适应高度的方法
2018/04/23 Javascript
JavaScript面向对象的程序设计(犯迷糊的小羊)
2018/05/27 Javascript
微信小程序 wepy框架与iview-weapp的用法详解
2019/04/10 Javascript
详解babel升级到7.X采坑总结
2019/05/12 Javascript
java和js实现的洗牌小程序
2019/09/30 Javascript
javascript 数组精简技巧小结
2020/02/26 Javascript
vue-cli3项目升级到vue-cli4 的方法总结
2020/03/19 Javascript
Python中列表list以及list与数组array的相互转换实现方法
2017/09/22 Python
详解Python 函数如何重载?
2019/04/23 Python
python 寻找离散序列极值点的方法
2019/07/10 Python
Python学习笔记之Django创建第一个数据库模型的方法
2019/08/07 Python
python图形绘制奥运五环实例讲解
2019/09/14 Python
Python字典底层实现原理详解
2019/12/18 Python
Python实现实时数据采集新型冠状病毒数据实例
2020/02/04 Python
Django中Aggregation聚合的基本使用方法
2020/07/09 Python
HTML5实现预览本地图片
2016/02/17 HTML / CSS
印尼美容产品购物网站:PerfectBeauty.id
2017/12/01 全球购物
彪马西班牙官网:PUMA西班牙
2019/06/18 全球购物
EJB的激活机制
2013/10/25 面试题
毕业自荐书
2013/12/09 职场文书
《临死前的严监生》教学反思
2014/02/13 职场文书
离婚协议书范本(通用篇)
2014/11/30 职场文书
演讲比赛主持词
2015/06/29 职场文书
《西门豹》教学反思
2016/02/23 职场文书
导游词之四川武侯祠
2019/10/21 职场文书