2014-09-26 8 views
6

Desidero trasferire un file da un modulo a un webworker. In Chrome i semplici possibile utilizzare questo codice per trasferire un FileList-Object:Trasferisci file al webworker: DataCloneError: l'oggetto non può essere clonato

worker.postMessage(files: array_files); 

Ma con Firefox ottengo questo errore:

Transfer file to webworker: DataCloneError: The object could not be cloned. 

Così ho provato a usare la sintassi per gli oggetti trasferibili. Qualcosa come questo?

var post = {files: array_files, file_ids: response.file_ids}; 
worker.postMessage(post, [post]); 

Ma con che ottengo questo in Chrome

Uncaught DataCloneError: Failed to execute 'postMessage' on 'Worker': Value at index 0 does not have a transferable type. 

E ancora

DataCloneError: The object could not be cloned. 

in Firefox.

Qual è il modo corretto per passare un FileList a un lavoratore?

+0

C'è un baco di Mozilla https://bugzilla.mozilla.org/show_bug.cgi?id=823484, quindi sei sfortunato a meno che qualcuno non lo risolva. In realtà sono disposto a risolvere il problema, tuttavia non mi piace creare build di Firefox, quindi se qualcuno potesse farmeli, potrei occuparmi del codice – Singagirl

+0

Ho avuto lo stesso problema, "L'oggetto non può essere clonato". perché mi stavo riferendo al param nel mio messaggio. Puoi fornire più codice? – romuleald

risposta

4

Non so come passare oggetti File con postMessage, ma almeno posso consigliare che gli oggetti trasferibili non funzionano in questo modo. Il secondo parametro facoltativo è un array delle istanze di ArrayBuffer di supporto di qualsiasi array tipizzato che si desidera passare. Così, per esempio, si supponga che il messaggio che si desidera inviare è un oggetto strutturato:

var message = {foo: 'abc', bar: new Uint8Array(...)}; 

worker.postMessage(message, [message.bar.buffer]) 

Si noti anche che passando una matrice tipizzato ad un altro lavoratore/finestra come un oggetto trasferibili rende l'array trasferito inaccessibile da parte del lavoratore di invio/finestra.

Problemi correlati