Transfer-Datei für webworker: DataCloneError: Das Objekt konnte nicht geklont werden
Ich möchte eine Datei zu übertragen, aus einem Formular in eine webworker. In chrome, die ich einfach verwenden kann, diesen code zu übertragen, ein FileList-Objekt:
worker.postMessage(files: array_files);
Aber mit Firefox bekomme ich diese Fehlermeldung:
Transfer file to webworker: DataCloneError: The object could not be cloned.
Also habe ich versucht, verwenden Sie die Syntax für Objekte übertragbar. So etwas wie das?
var post = {files: array_files, file_ids: response.file_ids};
worker.postMessage(post, [post]);
Aber mit, dass ich diese in Chrome
Uncaught DataCloneError: Failed to execute 'postMessage' on 'Worker': Value at index 0 does not have a transferable type.
Und noch
DataCloneError: The object could not be cloned.
in Firefox.
Was ist der richtige Weg, um pass eine FileList zu einem Arbeiter?
- Es ist Mozilla-bug bugzilla.mozilla.org/show_bug.cgi?id=823484, so sind Sie kein Glück, es sei denn, jemand wird es zu beheben. Tatsächlich bin ich bereit, das zu beheben, aber ich bin mir nicht bequem machen-Firefox-builds, also wenn das jemand machen könnte, her, mir, dann könnte ich mich kümmern-code
- Ich hatte das gleiche problem,
The object could not be cloned.
war, denn ich war nur eine Anspielung auf die param in meiner Nachricht. Kannst du uns mehr code?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich nicht wissen, wie die pass-Datei Objekte mit postMessage, aber zumindest ich kann Sie beraten, dass übertragbare Objekte funktionieren nicht auf diese Weise. Der optionale zweite parameter ist ein array mit den backing ArrayBuffer Instanzen typisierte arrays, die Sie übergeben möchten. So zum Beispiel, nehmen wir an, die Nachricht, die Sie möchten, zu posten ist ein strukturiertes Objekt:
Beachten Sie auch, dass man ein typisiertes array zu einem anderen Arbeiter/Fenster als transferable-Objekt macht das übertragene array unerreichbar vom sendenden worker/Fenster.