Así que estoy creando una web trabajador:

var arrayit = function(obj) {
  return Array.prototype.slice.call(obj);
};
work = arrayit(images);
console.log(work);
//work = images.push.apply( images, array );
//Method : "load+scroll"
var worker = new Worker('jail_worker.js');
worker.postMessage(work)
worker.onmessage = function(event) {
  console.log("Worker said:" + event.data);
};

Aquí es lo de las imágenes es:

$.jail.initialStack = this;
//Store the selector into 'triggerEl' data for the images selected
this.data('triggerEl', (options.selector) ? $(options.selector) : $window);
var images = this;

Creo que mi problema tiene algo que ver con esto:

http://dev.w3.org/html5/spec/Overview.html#safe-passing-of-structured-data

¿Cómo puedo evitar esto? como se puede ver, he intentado dividir el objeto host en una matriz real, pero que no funcionó.

Aquí un enlace al archivo que estoy trabajando:

https://github.com/jtmkrueger/JAIL

ACTUALIZACIÓN————————————————–

Esto es lo que tuve que hacer sobre la base de la aceptación de la respuesta de @davin:

var arrayit = function(obj) {
  return Array.prototype.slice.call(obj);
};
imgArray = arrayit(images);
work = _.map(images, function(i){ return i.attributes[0].ownerElement.outerHTML; });

var worker = new Worker('jail_worker.js');
worker.postMessage(work)
worker.onmessage = function(event) {
  console.log("Worker said:" + event.data);
};

NOTA: he utilizado underscore.js para asegurar la compatibilidad.

Como un aparte, se han considerado las alternativas a este método para async/paralelo de la imagen/de la distribución de contenidos? Un CDN, subdominio divisiones, RequireJS plugin, etc.?
sí, y algunas de esas cosas ya están sucediendo.
Ser conscientes de que más de parallelising es generalmente de más de un rendimiento de arrastre de una mejora, así que si ya estás implementación de las cosas, y no son lo suficientemente bueno, tal vez usted debería ver cómo aquellos que están trabajando…
este es el único aspecto que tienen un ámbito de control, así que estoy tratando de hacer lo mejor de ella.
Demasiado malo. ¿Qué objeto host estás hablando? Lo que exactamente están tratando de pasar a la segunda guerra MUNDIAL? Si usted está buscando para pasar el objeto jquery que no trabajo desde WW API de no implementar la memoria compartida, y tratando de copiar un Objeto de resultados en el paso de un objeto vacío (como su enlace se explica). Usted necesita serialise cualquier datos que desea enviar a través de.

OriginalEl autor thatmiddleway | 2011-09-21

2 Comentarios

  1. 22

    La excepción original era más probable produce debido a que trató de pasar de un objeto host de la web de trabajador (lo más probable es un elemento de dom). Los intentos subsiguientes no tirar el mismo error. Recordar dos puntos clave: no hay memoria compartida entre los diferentes hilos, y la web de los trabajadores no pueden manipular el DOM.

    postMessage admite que pasa estructurado de datos de los hilos, y se internamente serialise (o en alguna otra forma de copiar el valor de los datos de forma recursiva) de los datos. Serialising elementos del DOM a menudo resulta en la circular de referencia errores, así que lo mejor es map el objeto que desea serializado y extracción de datos relevantes para ser reconstruida en la web del trabajador.

    Ver mis actualizaciones por cómo he implementado esta.
    Bien explicado y al punto. Gracias, me salvó un montón de horas de lectura.
    postMessage clonación algoritmo de soporte de estructuras cíclicos

    OriginalEl autor davin

  2. 0

    Uncaught DataCloneError: An object could not be cloned se reprodujo cuando trató de salvar a indexeddb función como objeto de la clave. Necesita el doble de volver a comprobar que guardan objeto serializable

    OriginalEl autor Blackrabbit99

Dejar respuesta

Please enter your comment!
Please enter your name here