Ссылка NullReferenceException или Object, не установленная на экземпляр объекта, возникает, когда объект класса, который вы пытаетесь использовать, не создается. Например:
Предположим, что у вас есть класс с именем Student.
public class Student
{
private string FirstName;
private string LastName;
public string GetFullName()
{
return FirstName + LastName;
}
}
Теперь рассмотрим другой класс, в котором вы пытаетесь получить полное имя учащегося.
public class StudentInfo
{
public string GetStudentName()
{
Student s;
string fullname = s.GetFullName();
return fullname;
}
}
Как видно из вышеприведенного кода, оператор Student s - объявляет только переменную типа Student, обратите внимание, что класс Student не создается в этой точке. Следовательно, когда выполняется выполнение инструкции s.GetFullName (), она выкинет исключение NullReferenceException.
Проверьте 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]
Я также хочу добавить, что вы можете отлаживать веб-работников только в браузерах на основе Chromium. Вы должны выбрать Sources в панели разработчика, а в правом столбце - нижнюю строку Рабочие , а затем установите флажок в начале .