Простым решением для получения доступа к сообщениям / данным от работника в целях отладки является использование postMessage()
из вашего рабочего потока для передачи нужной вам информации отладки.
Эти сообщения затем могут быть "перехвачены" в вашем родительском процессе "onmessage
обработчик, который может, например, регистрировать сообщения / данные, переданные от рабочего к консоли. Преимущество этого подхода заключается в том, что он неблокирующий и позволяет рабочим процессам работать как реальные потоки и отлаживаться в обычной среде браузера. Хотя подобное решение не позволяет проверять код рабочего процесса на уровне точек останова, во многих ситуациях оно предоставляет возможность предоставлять столько или меньше данных, сколько необходимо из рабочего процесса, чтобы помочь в отладке.
Простая реализация может выглядеть следующим образом (показаны соответствующие выдержки):
// Где-то в области действия onmessage
работника (используйте столько раз, сколько необходимо):
postMessage({debug:{message:"This is a debug message"}});
// В обработчике onmessage
родителя:
myWorker.onmessage = function(event) {
if(event.data && event.data.debug) {
// handle debug message processing here...
if(event.data.debug.message) {
console.log("message from worker: %o", event.data.debug.message);
}
} else {
// handle regular message processing here...
}
};