Eine einfache Lösung, um zu Debugging-Zwecken Zugriff auf Nachrichten / Daten eines Workers zu erhalten, besteht darin, die postMessage()
gewünschten Debugging-Informationen innerhalb Ihres Worker-Threads zurückzugeben.
Diese Nachrichten können dann in Ihrem übergeordneten Prozess "abgefangen" werden. onmessage
Handler , der beispielsweise die vom Worker an die Konsole zurückgegebenen Nachrichten / Daten protokollieren kann. Dies hat den Vorteil, dass es sich um einen nicht blockierenden Ansatz handelt, und ermöglicht es, dass Arbeitsprozesse als echte Threads ausgeführt und in der üblichen Browserumgebung debuggt werden. Während eine solche Lösung keine Überprüfung des Arbeitsprozesscodes auf Haltepunktebene ermöglicht, bietet sie in vielen Situationen die Möglichkeit, so viele oder so wenig Daten wie nötig aus einem Arbeitsprozess heraus verfügbar zu machen, um das Debuggen zu erleichtern.
Eine einfache Implementierung kann wie folgt aussehen (relevante Auszüge gezeigt):
// Irgendwo im onmessage
Funktionsumfang des Workers (so oft wie nötig verwenden):
postMessage({debug:{message:"This is a debug message"}});
// Im onmessage
Handler des Elternteils :
myWorker.onmessage = function(event) {
if(event.data && event.data.debug) {
if(event.data.debug.message) {
console.log("message from worker: %o", event.data.debug.message);
}
} else {
}
};
debugger;
vor der Zeile, die Sie als Haltepunkt setzen möchten, etwas hinzuzufügen ?