Utilización de web workers
UTILIZACIÓN DE WEB WORKERS
Un Worker es una manera ejecutar código JavaScript de manera sitio web paralela al proceso principal, sin interferir con el navegador. El navegador sigue siendo responsable de solicitar y analizar ficheros, renderizar la vista, ejecutar JavaScript y cualquier otro proceso que consuma tiempo de procesado y que haga que el resto de tareas tengan que esperar. Y es aquí donde los Utilización de web workers toman importancia.
Al igual diseño web que con el resto de funcionalidades de HTML5, debemos comprobar su disponibilidad en el navegador en el que ejecutamos la aplicación:
if(Modernizr.webworkers)
{
alert(‘El explorador soporta Web workers’);
}
else
{
alert(‘El explorador NO soporta Web workers’);
}
Crear nuevo diseño Worker es muy sencillo. Tan sólo tenemos que crear una nueva instancia del objeto Worker, indicando como parámetro del constructor el fichero JavaScript que contiene el código que debe ejecutar el WorkerUtilización de web workers.
var worker = new Worker(‘my_worker.js’);
De esta manera tenemos disponible y listo para utilizar un nuevo Worker. En este momento, podríamos pensar que podemos llamar a métodos o utilizar objetos definidos dentro del nuevo Worker, pero no nada más lejos de la realidad. La única manera de comunicarnos con el nuevo Worker es a través del paso de mensajes, como hemos visto anteriormente.
worker.postMessage(‘Hello World’);
Éste método únicamente acepta un parámetro, la cadena de texto a enviar al Worker. Por otra parte, la manera de recibir mensajes originados en el Worker es definiendo un escuchador para el evento message. Los datos incluidos por el Worker se encuentran disponibles en la propiedad data del evento Utilización de web workers.
worker.addEventListener(‘message’, function(e) { alert(e.data); }, false);
Evidentemente, dentro de un Worker necesitamos comunicarnos con el thread principal, tanto para recibir los datos de los mensajes como para nuevos datos de vuelta. Para ello, añadimos un escuchador para el evento message, y enviamos los datos de vuelta utilizando el mismo método postMessage.
reservada this no hace referencia al objeto window, sino al Worker en sí mismo. Debido al comportamiento de ejecución en paralelo de los Web workers, éstos solo pueden
Los Workers tienen la capacidad de generar Workers secundarios. Esto significa, que podemos dividir la tarea principal en subtareas, y crear nuevos Workers dentro del Worker principal. Sin embargo, a la hora de utilizar los Subworkers, y antes de poder devolver el resultado final al hilo principal, es necesario asegurarse que todos los procesos han terminado.