2010-10-25 3 views
17

Нашел ответ, некоторые из моих проблем, html5 веб-работников !!!javascript web workers - как передать аргументы?

Как передать аргумент веб-работнику, используя этот базовый пример?

содержания worker.js:

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

код расслоения плотного:

var worker = new Worker('worker.js'); 
    worker.onmessage = function (event) { 
    alert(event.data); 
    }; 
+0

Использование SetTimeout так: 'SetTimeout (йоЗотеЬЫпд, 3000);' это лучше, потому что никакой дополнительной оценки не происходит ... –

+0

https://developer.mozilla.org/En/Using_web_workers – epascarello

ответ

25

Как вы можете видеть, у вас есть один и тот же механизм для сообщений как рабочие к основным и главным в-работнику ,

  • метод postMessage для отправки сообщений
  • onmessage член для определения обработчика, который принимает сообщения

В главном скрипте:

worker.postMessage(data); 

В сценарии работника:

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

... или просто ...

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

Это может быть то, что данные должны быть строкой ... (Firefox 3.5+ поддерживает переходящая в JSON-совместимых объектов)

+2

идеальный благодаря! – Joe

+5

@Joe Я рад, что есть люди, которые действительно используют новые функции, которые не реализованы в IE :) –

+0

что там? в self.addEventListener? –

0
var worker = new Worker(window.App.baseUrl + '/Scripts/signature/GetCurrenProductWorker.js'); 
        worker.postMessage(window.App.baseUrl) 


    var _base_url = '' 
     var xhr = new XMLHttpRequest(); 
     onmessage = function (e) { 
      _base_url = e.data 
      xhr.open("GET", _base_url + "/api/product/Get"); 
      xhr.onload = function() { 
       postMessage(xhr.responseText); 
      }; 
      xhr.send(); 

     }; 

эта работа для меня

Смежные вопросы