Проверьте HTML5 Rocks: Основы работы веб-работников для общего учебника.
postMessage
рабочего . onmessage
рабочего в основном коде, будет работать, когда рабочий вызывает postMessage
. postMessage
. onmessage
как для рабочего, так и для основного кода имеет то же значение. Это обработчик событий, когда поток получает событие сообщения. Вместо этого вы можете использовать addEventListener
, поймав событие message
: Основной код:
function showResult(event) {
document.getElementById("result").textContent = event.data;
dump("Got: " + event.data + "\n");
}
var worker = new Worker("fibonacci.js");
worker.addEventListener('message', showResult, false);
Рабочий код:
addEventListener('message', resultReceiver, false);
Пример фибоначчи, который вы взяли, является примером рекурсивного рабочего. Если бы не использовать рабочих, это было бы примерно так:
function fibonacci(n) {
if (n == 0 || n == 1) return n;
return fibonacci(n-1) + fibonacci(n-2);
}
var result = fibonacci(5);
dump("Got: " + result + "\n");
(о нет, я не собираюсь делать без вас стеки, вы сами пишете!) [/ G9]