Advertisement
Guest User

Untitled

a guest
Oct 24th, 2014
119
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
HTML 0.99 KB | None | 0 0
  1. <!doctype html>
  2. <meta charset="utf-8">
  3. <title></title>
  4. <script>
  5.  
  6. var outerWorker = new Worker('a.js');
  7. /*
  8.   Code von a.js:
  9.   this.onmessage = function(evt){
  10.     var port = evt.data.port;
  11.     port.onmessage = this.postMessage.bind(this);
  12.     port.postMessage(23);
  13.   };
  14. */
  15.  
  16. var innerWorker = new Worker('b.js');
  17. /*
  18.   Code von b.js:
  19.   this.onmessage = function(evt){
  20.     if(evt.data === 23){
  21.       this.postMessage(42);
  22.     }
  23.   };
  24. */
  25.  
  26. function createProxy(worker){
  27.   var channel = new MessageChannel();
  28.   var localPort = channel.port1;
  29.   var remotePort = channel.port2;
  30.   localPort.start();
  31.   remotePort.start();
  32.   localPort.onmessage = function(evt){
  33.     worker.postMessage(evt.data);
  34.   };
  35.   worker.onmessage = function(evt){
  36.     localPort.postMessage(evt.data);
  37.   }
  38.   return remotePort;
  39. }
  40. var proxy = createProxy(innerWorker);
  41.  
  42. outerWorker.postMessage({
  43.   port: proxy
  44. }, [proxy])
  45.  
  46. innerWorker.onmessage = function(evt){
  47.   window.alert(evt.data); // > 42
  48. };
  49.  
  50. </script>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement