if(window.Worker){ dosomething }// Workerwindow.indexedDB = window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB; if(!window.indexedDB){ dosomething }// indexedDB之后,worker对象会通过postMessage线程向indexedDB数据库发送数据,当indexedDB数据库接收到客户端发送的数据,首先把数据的键值储存并记录到indexedDB数据库表里面,其实相当于把数据保存在一张结构完整的表内。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的的尺寸、以及拖动浏览器时,主线程访问后台数据时,并不会中断数据之间的进程。
分享一个链接caniuse,通过这个工具你能更加全面的看到各个浏览器的(hack)。
// *注Worker的首字母必须是大写的
// *注Worker的脚本目录必须是HTML能够访问到的目录
以上就是本文的全部内容,希望对大家深入理解JavaScript中worker事件api有所帮助。