lunes, julio 27, 2009

Presentando a los workers (Javascript)

Hace una semana John Resig se hacía eco con un post en su blog sobre los workers. Ya os podéis imaginar lo liado que he estado que ni me había enterado de la introducción de esta característica en los navegadores de última generación (Firefox 3.5...).

Lo que los workers nos aportan es poder ejecutar código en segundo plano sin la preocupación de bloquear la pantalla al usuario. Si programais aplicaciones con mucho javascript, AJAX, etc... sabréis de que os estoy hablando. Bueno, pues con esto, en teoría, se solucionan nuestros problemas (realmente se solucionarán cuando todos los navegadores los implementen).

Vamos a ver como funcionan (he puesto comentarios para explicar cada una de las lineas):

// declaramos el worker, su funcionalidad estara en el fichero .js pasado al constructor
var myWorker = new Worker("worker.js");

// codigo que se ejecutara cuando el worker termine
myWorker.onmessage = function(e){
// en e.data tenemos la respuesta del worker
alert(e.data);
};

// arrancamos el worker
myWorker.postMessage("start");
Y ahora el código propio del worker (el fichero worker.js):

// dentro de esta funcion pondremos la logica a ejecutar por el worker
onmessage = function(e){
// en e.data tenemos la informacion enviada en el momento de arrancar el worker
if ( e.data === "start" ) {
// una vez terminada la ejecucion devolvemos la respuesta
postMessage("done");
}
};
Por supuesto desde el código principal también podemos hacerle cosas al worker como, por ejemplo, finalizarlo:

myWorker.terminate();

3 comentarios:

  1. Frikazo?

    Lastima que sea tarde para el "nuevo duty boaaaaard"

    ResponderEliminar
  2. Os voy a dar a ti y a Julio con el nuevo Duty Board, pa mi que os pegasteis un mes jugando al tigris & eufrates o al agricola mientras deciais: "este nuevo duty board va a ser mil veces mejor que el que hicieron Fernando, Abel y Alvaro..."

    ResponderEliminar