Estoy usando esta Web trabajador que tiene una variable Global declarada en la misma. Puedo tener acceso a la misma (variable Global del trabajador 1) en el recién generada web worker(trabajador 2)?

Cuando he intentado usar jQuery en la web trabajador, me sale error «de la ventana no está definido». Hay alguna forma de utilizar jQuery en un Web Worker?

importScripts('jquery-latest.js'); 

función fetch_ajax(url) { 
$.ajax({ 
tipo: 'GET', 
url: url 
success: function(respuesta) { 
postMessage(respuesta); 


} 
}); 
} 

fetch_ajax('test.txt'); 
  • Parece que he pedido a dos preguntas aquí. StackOverflow preguntas deben mantenerse separadas. Estoy bastante seguro de que el jQuery pregunta ya está contestada, por lo que es probablemente el mejor para quitar esa parte de tu pregunta.
InformationsquelleAutor Nigilan | 2012-06-27

2 Comentarios

  1. 47

    Web los Trabajadores no tienen un window objeto.

    Para el acceso global el estado, el uso self lugar, el código que funciona tanto en el hilo principal y el subproceso de trabajo.

    Pero se nota que todavía no será capaz de acceder o manipular los padres DOM (por ejemplo, obtener window.jQuery a través de self.jQuery).

    Mientras que el hilo principal de la ventana de self puntos a la Ventana de objetos, en los subprocesos de trabajo self puntos a independiente WorkerGlobalScope objeto.

    • Tnx yo prácticamente probado y se encontró que soy incapaz de acceder a una variable en worker1 en worker2. Y también no se puede utilizar jQuery ya que no hay acceso a la ventana de objetos. En lugar de ello, he utilizado nativo XHR y devuelve la respuesta correctamente…
    • Y es un buena cosa. La comunicación con los trabajadores es a través de mensajes (PostMessage método y onmessage evento). El acceso a DOM o de algunas variables como resultado un montón de desagradables errores…
    • Mi entendimiento es que el ámbito global en la web de cada uno de los trabajadores, y en el hilo principal (la página web), son independientes, sino que, en cada caso, se puede acceder a través de la self objeto. En el hilo principal, self es un sinónimo de window. Es este su comprensión así, o ¿quieres decir algo más?
    • El self propiedad de un objeto global, básicamente, devuelve this (tal vez no literalmente, pero conceptualmente). Así, window.selfdevuelve window, y self dentro de un Web Worker devuelve el objeto global de la persona del trabajador (lo que se llama).
  2. 14

    Basa en @buley sugerencia, yo lo hice:

    var window = self;
    
    importScripts(/* dependencies here */);
    
    /* my code */

    En mi caso yo estaba tratando de utilizar la ES6-Promesa lib: https://github.com/jakearchibald/es6-promise#readme

    • Este «tip» es un poco arriesgado.Para algunos propósito diferente (el intercambio de código), estoy usando la prueba typeof window !== 'undefined' para comprobar si estoy en una web trabajador, o en el puesto principal de JavaScript del lado cliente. No funciona más.

Dejar respuesta

Please enter your comment!
Please enter your name here