Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

javascript web workers - how do I pass arguments?

Tags:

javascript

Found the answer some some of my problems, html5 web workers!!!

How do I pass an argument to a web worker though using this basic example?

contents of worker.js:

function doSomething() {     postMessage( ' done'); } setTimeout ( "doSomething()", 3000 ); 

js code:

 var worker = new Worker('worker.js');   worker.onmessage = function (event) {     alert(event.data);   }; 
like image 946
Joe Avatar asked Oct 25 '10 21:10

Joe


People also ask

Can I pass function to web worker?

You pass any function to the plugin as an argument and get result in callback. You also can "outsource" object's methods, function with dependecies, anonymous function and lambda. Enjoy.

What are the limitations of web workers?

Limitations Of Web WorkersA worker can't directly manipulate the DOM and has limited access to methods and properties of the window object. A worker can not be run directly from the filesystem. It can only be run via a server.

How do JavaScript web workers work?

A web worker is a JavaScript that runs in the background, independently of other scripts, without affecting the performance of the page. You can continue to do whatever you want: clicking, selecting things, etc., while the web worker runs in the background.


1 Answers

As you can see you have the same mechanism for both worker-to-main and main-to-worker messages.

  • the postMessage method for sending messages
  • the onmessage member for defining the handler that receives the messages

In the main script:

worker.postMessage(data); 

In the worker script:

self.addEventListener("message", function(e) {     // the passed-in data is available via e.data }, false); 

... or just...

onmessage = function(e) {     // the passed-in data is available via e.data }; 

It may be that data has to be a string... (Firefox 3.5+ supports passing in JSON-compatible objects)

like image 113
Šime Vidas Avatar answered Sep 22 '22 03:09

Šime Vidas