If you are not familiar with event events, it is recommended to read my previous text javascript: Understanding DOM events. Or look directly below the worker API.
First, we need to instantiate a worker object, and the browser will open a new interface based on the newly created Worker object, which will handle the communication between the client and the INDEXEDDB database. The database here refers to the browser database. If you need to determine whether the browser supports worker objects, see the following code. or whether the browser supports the INDEXEDDB database, see the same, the two are best to choose the former. Because IE does not support INDEXEDDB.
if (window. Worker) {dosomething}
Worker
= WINDOW.INDEXEDDB | | WINDOW.MOZINDEXEDDB | | Window.webkitindexeddb
if (!WINDOW.INDEXEDDB) {dosomething}
IndexedDB
The worker object then sends data through the PostMessage thread to the INDEXEDDB database, and when the INDEXEDDB database receives the data sent by the client, it first stores and records the key values of the data into the INDEXEDDB database table. In fact, it is equivalent to storing the data in a fully structured table.
Therefore, the INDEXEDDB database will throw the received data values to the new interface processing, when the new interface to obtain data and parse, will be thrown back through the PostMessage data to the database, the database receives the return of the data processing in the same way as above, At this point the INDEXEDDB database throws the returned data to the OnMessage thread that the client accepts the parameters, and the main thread behind the OnMessage threads is the data that is sent back.
/*koringz.github.io** $author koringz* $data 2015-12-24* $version 0.1**/varTXT1 = Document.queryselector ("#txt1")varTXT2 = Document.queryselector ("#txt2")varTXT3 = Document.queryselector ("#txt3")varresult = Document.queryselector ("#result") Window.indexeddb= WINDOW.INDEXEDDB | | WINDOW.MOZINDEXEDDB | | WINDOW.WEBKITINDEXEDDB | |Window.msindexeddb; if(!window.indexeddb) {Console.log ("Your browser does not support INDEXEDDB"); } if(window. Worker) {var_this =NewWorker (".. /.. /js/build/scroll_ten1.js "); Txt1.onchange=function() {_this.postmessage ([txt1.value,txt2.value,txt2.value])//e = [Txt1.value,txt2.value]Console.log ("message post to work")} Txt2.onchange=function() {_this.postmessage ([txt1.value,txt2.value,txt2.value])//e = [Txt1.value,txt2.value]Console.log ("message post to work")} _this.onmessage=function(s) {//received Data eResult.textcontent =S.data; } }
function // e receiving parameters of worker.postmessage transmission var s = (e.data[2]*e.data[1]); var workerresult = "result :" + s; //w Orker.onmessage The callback workerresult parameter }
Presumably, after looking at the above analysis, what are you going to do with the worker? For this problem, it is now possible to solve the non-blocking problem of threads, how to say that when the user changes the size of the browser and drags the browser, the main thread accesses the background data and does not interrupt the process between the data.
What are the browser that support worker?
Share a link caniuse, this tool you can more fully see the various browsers (hack).
* Note that the first letter of the worker must be in uppercase
* Note that the script directory of the worker must be the directory that the HTML can access
Full JS code access to GitHub
JavaScript: Understanding the Worker Event API