DOMWorkerThreads current: Difference between revisions

Jump to navigation Jump to search
no edit summary
No edit summary
No edit summary
Line 1: Line 1:
== Current API for Firefox 3.1 Alpha 1 ==
 
== Sample usage ==
 
<blockquote>
<code>
<pre>
 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
  <title>Fibonacci from a worker thread</title>
  <body>
 
  <div id="start-div"></div>
  <p><div id="result-div">Result from worker: (pending)</div></p>
  <div id="end-div"></div>
 
  <script language="javascript">
    var startdiv = document.getElementById("start-div");
    var resultdiv = document.getElementById("result-div");
    var enddiv = document.getElementById("end-div");
 
    startdiv.innerHTML = "Started: " + new Date();
 
    function scriptToRun(){
      // Hook us up to receive messages from the pool
      this.messageListener = function(message, source) {
        var num = parseInt(message);
        if (isNaN(num)) {
          throw "Pool sent a value we couldn't interpret!";
        }
        postMessageToPool(fibonacci(num));
      };
 
      // Worst implementation of fibonacci *ever*!
      function fibonacci(n) {
        if(n == 0)
          return 0;
        if(n == 1)
          return 1;
        return fibonacci(n - 1) + fibonacci(n - 2);
      }
    }
 
    var wp = navigator.newWorkerPool();
 
    wp.messageListener = function(message, source) {
      resultdiv.innerHTML = "Result from worker: " + message;
      enddiv.innerHTML = "Finished: " + new Date();
    };
 
    wp.errorListener = function(error, source) {
      alert("Worker had an error: " + error);
    }
 
    var thread = wp.createWorker("" + scriptToRun + "scriptToRun();");
    thread.postMessage(35);
 
  </script>
  </body>
</html>
 
 
</pre>
</code>
</blockquote>
 
== Current API for Firefox 3.1 Alpha 2 ==
 
This API has *already* changed, so it is only valid for Alpha 2.


<blockquote>
<blockquote>
Line 156: Line 224:


The worker's scope is far more limited. See <code>nsIDOMWorkerGlobalScope</code> above for details.
The worker's scope is far more limited. See <code>nsIDOMWorkerGlobalScope</code> above for details.
== Sample usage ==
<blockquote>
<code>
<pre>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
  <title>Fibonacci from a worker thread</title>
  <body>
  <div id="start-div"></div>
  <p><div id="result-div">Result from worker: (pending)</div></p>
  <div id="end-div"></div>
  <script language="javascript">
    var startdiv = document.getElementById("start-div");
    var resultdiv = document.getElementById("result-div");
    var enddiv = document.getElementById("end-div");
    startdiv.innerHTML = "Started: " + new Date();
    function scriptToRun(){
      // Hook us up to receive messages from the pool
      this.messageListener = function(message, source) {
        var num = parseInt(message);
        if (isNaN(num)) {
          throw "Pool sent a value we couldn't interpret!";
        }
        postMessageToPool(fibonacci(num));
      };
      // Worst implementation of fibonacci *ever*!
      function fibonacci(n) {
        if(n == 0)
          return 0;
        if(n == 1)
          return 1;
        return fibonacci(n - 1) + fibonacci(n - 2);
      }
    }
    var wp = navigator.newWorkerPool();
    wp.messageListener = function(message, source) {
      resultdiv.innerHTML = "Result from worker: " + message;
      enddiv.innerHTML = "Finished: " + new Date();
    };
    wp.errorListener = function(error, source) {
      alert("Worker had an error: " + error);
    }
    var thread = wp.createWorker("" + scriptToRun + "scriptToRun();");
    thread.postMessage(35);
  </script>
  </body>
</html>
</pre>
</code>
</blockquote>
Confirmed users
137

edits

Navigation menu