workers jquery ajax html5 web-worker

workers - Trabajador web HTML y llamada jquery ajax



web worker vs service worker (6)

Dado que los trabajadores web están en archivos externos, no tienen acceso a los siguientes objetos de JavaScript:

  • El objeto ventana
  • El objeto de documento
  • El objeto padre

Así que no puedes usar $ dentro del archivo del trabajador. Mejor puedes usar AJAX tradicional algo como esto.

if (window.XMLHttpRequest) { // code for IE7+, Firefox, Chrome, Opera, Safari xmlhttp=new XMLHttpRequest(); } else { // code for IE6, IE5 xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); }

Referencia en http://www.w3schools.com/html/html5_webworkers.asp

Me pregunto si puedo usar jQuery dentro del archivo de trabajo web. Google Chrome me da este error: "UnCught ReferenceError: $ no está definido".

Aquí está el código: El archivo principal:

var loader = new Worker(BASE_URL + "js/rss_loader_worker.js"); // Ask the worker to start loading the RSS from the server loader.postMessage("loadRss"); // When receive the response from the server loader.onmessage = function (event) { console.log(event.data); }

El archivo de trabajo:

onmessage = function (event) { if (event.data === "loadRss") { loadRss(); } } /** * This function handles the AJAX request to the server side * then pass the content to the view page * @param none * @return html text */ loadRss = function () { $.ajax({ data: {city: CITY_LOCATION}, url: BASE_URL + "/getfeeds", onsucess: function (data) { } }); }

Por favor ayuda, gracias :)



El entorno de ejecución en Node.JS también carece de una implementación DOM nativa. Creo que es justo decir que Node.JS y HTML5 Web Workers comparten ciertas restricciones.

Hay formas de simular una implementación DOM con el propósito de usar jQuery en Node.JS. Si aún desea utilizar jQuery en Web Workers, creo que debería buscar las soluciones Node.JS y ver si se aplican.


Esto es lo que encontré:

Puede cargar archivos de script externos o bibliotecas en un trabajador con la función importScripts() .

http://www.html5rocks.com/en/tutorials/workers/basics/#toc-enviornment-loadingscripts

importScripts(''script1.js''); importScripts(''script2.js'');

o

importScripts(''script1.js'', ''script2.js'');

Sin embargo, no puede cargar jQuery, porque jQuery requiere acceso a DOM, que los trabajadores web no tienen.


No, no puedes . No hay acceso a componentes que no sean seguros para subprocesos o al DOM, y tiene que pasar datos específicos dentro y fuera de un subproceso a través de objetos serializados. Así que tienes que trabajar muy duro para causar problemas en tu código. jQuery es una biblioteca DOM de JavaScript .

Sin embargo, puede utilizar un XMLHttpRequest nativo en su trabajador sin embargo.

Y, la importación de scripts externos no pasa a través de la página con una etiqueta de script : use importScripts() para eso en su archivo de trabajo.


jQuery es principalmente para trabajar con DOM y trabajar con páginas web. Por lo tanto, no es tan adecuado para los trabajadores web que no tienen acceso al DOM.

Es posible que desee utilizar una biblioteca de utilidades en lugar de una biblioteca DOM, como underscore.js , o tal vez alguien debería hacer una biblioteca de jQuery Worker, una versión reducida de jQuery sin toda la funcionalidad de manipulación de DOM, simplemente manteniendo las funciones de utilidad .