2016-11-11 4 views
-2

Ich habe ein Array auf Objekte, Meshes mit Three.js erstellt, die ich einige Operationen in einem Web-Worker machen möchte. Die Frage ist also, wie stelle ich sie dem Arbeiter zur Verfügung?Posting Three.js Meshes zu Web-Arbeiter mit JavaScript

Von dem, was ich verstehe, gibt es etwas namens übertragbare Objekte, die etwas namens ArrayBuffer verwendet, aber ich kann keine Informationen darüber finden, wie mein Array von Objekten zu dem konvertieren. Oder ist das vielleicht nicht möglich?

+0

lesen MDN Artikel über die Thema, sie sind ziemlich klar. Sie scheinen unsicher zu sein, was selbst der übertragbare und ArrayBuffer ist. MDN wird Ihre Unsicherheit beseitigen. –

Antwort

1

Wenn Ihr Objekt nicht bereits im binären Pufferformat vorliegt, hat die Konvertierung in dieses Format und zurück keinen Leistungsvorteil. Aus irgendeinem Grund können die meisten Web Socket-Benutzer dies nicht verstehen - Fragen wie diese werden ständig gestellt. Meine Antwort ist immer die gleiche - wenn Ihr Anliegen Leistung ist, konvertiere nichts:

Just plain good ol verwenden ':

worker.postMessage (meinArray);

Wenn Sie aus irgendeinem Grund denken, dass ich falsch über die Leistung, fühlen sich frei, meine Ansprüche Tatsache-Check mit interaktiven Code-Schnipsel in dieser Antwort:

+0

Ok danke! Ich werde meine Meshes in eine JSON-Struktur konvertieren, die die Meshes-Objekte im Worker regeneriert. – arpo

+0

@arpo Konvertieren Sie es nicht. Lassen Sie den Browser damit umgehen, es wird in Ordnung sein. Stellen Sie Ihr Array direkt auf "postMessage" und im Worker erhalten Sie es. –

+0

Das war das erste, was ich ausprobiert habe. Es gibt mir diesen Fehler: "Uncaught DOMException: Fehler beim Ausführen von 'postMessage' auf 'Worker': Ein Objekt konnte nicht geklont werden." – arpo