SlideShare une entreprise Scribd logo
1  sur  14
HTML5 Web Workers

   Rodolfo Finochietti
HTML5 Web Workers
HTML5 Web Workers
• Sin Web Workers:
  • Las tareas de larga duración en JavaScript bloquean
    cualquier otro JavaScript en la pagina
  • JavaScript puede hacer que se “cuelgue” la UI en algunos
    browsers
• Con Web Workers:
  • Se agregan capacidades de procesamiento en Background
    a las aplicaciones Web
  • Las operaciones en paralelo se pueden correr
    concurrentemente
HTML5 Web Workers
• Web Workers se puede usar para
  • Procesamiento numérico intensivo
  • Actualización en background de una base de datos
    remota desde una local
  • Actualización de precios desde el server
  • Search queries
Demo
Usando la API de Web Worker
HTML5 Web Workers
• No se puede acceder window.document
• No hay acceso directo a la pagina ni al DOM
• Si bien Web Workers no bloquean al UI
  consumen CPU y pueden hacer el sistema
  menos responsivo
Como usar Web Workers
• Crear un objeto Web Worker y pasarle el archivo
  JavaScript a ejecutar
• Usar la Cross Document Messaging API
  (postMessage) para comunicarse con el thread
  principal
• En la pagina web:
  • Configurar un event listener asincrónico para
    escucharlos mensajes y errores que vengan desde
    worker
  • Llamar a postMessage para pasarle información al
    worker
JavaScript
 //Check if Web Workers are supported
 if (typeof(Worker) !== "undefined") {
     document.getElementById("support").innerHTML =
          “Your browser supports HTML5 Web Workers";
 }

 //Create a new worker
 //The URL for the JavaScript file can be a relative or
 //absolute URL with the same origin
 //(the same scheme, host, and port) as the main page
 worker = new Worker("echoWorker.js");


 //to load additional JavaScript
 importScripts("helper.js, "anotherHelper.js");
JavaScript
 //Main Page
 worker.postMessage("Here's a message for you");

 //Add event listener
 worker.addEventListener("message", messageHandler,
 true);

 //Process incoming messages
 function messageHandler(e) {
     // process message from worker
 }

 //Handle errors
 worker.addEventListener("error", errorHandler, true);

 //Stop worker
 worker.terminate();
JavaScript
 //Worker
 function messageHandler(e) {
     postMessage("worker says: " + e.data + " too");
 }

 addEventListener("message", messageHandler, true);

 //Using a Web Worker within a Web Worker
 var subWorker = new Worker("subWorker.js");
Browser Support
•   Chrome 4.0+
•   Firefox 3.5+
•   Safari 4.0+
•   Opera 10.6+
•   IE 10
¿Preguntas?
rodolfof@lagash.com
http://twitter.com/rodolfof
   http://shockbyte.net




     ¡GRACIAS!

Contenu connexe

Tendances

Tendances (20)

NodeJS
NodeJSNodeJS
NodeJS
 
MEAN ¿otro buzzword?
MEAN ¿otro buzzword?MEAN ¿otro buzzword?
MEAN ¿otro buzzword?
 
Web services
Web servicesWeb services
Web services
 
Functional Tests with Geb
Functional Tests with GebFunctional Tests with Geb
Functional Tests with Geb
 
Workshop 7: Single Page Applications
Workshop 7: Single Page ApplicationsWorkshop 7: Single Page Applications
Workshop 7: Single Page Applications
 
Realtime nodejs socket io
Realtime nodejs   socket ioRealtime nodejs   socket io
Realtime nodejs socket io
 
Componentes en angularjs 1.5
Componentes en angularjs 1.5Componentes en angularjs 1.5
Componentes en angularjs 1.5
 
Desarrollo de Aplicaciones con Node.js | INTERSYS UNPRG | 2012
Desarrollo de Aplicaciones con Node.js | INTERSYS UNPRG | 2012Desarrollo de Aplicaciones con Node.js | INTERSYS UNPRG | 2012
Desarrollo de Aplicaciones con Node.js | INTERSYS UNPRG | 2012
 
Sácale todo el provecho a Stylus el mejor pre procesador de CSS
Sácale todo el provecho a Stylus el mejor pre procesador de CSSSácale todo el provecho a Stylus el mejor pre procesador de CSS
Sácale todo el provecho a Stylus el mejor pre procesador de CSS
 
Introducción a NodeJS
Introducción a NodeJSIntroducción a NodeJS
Introducción a NodeJS
 
De escritorio a Javascript, nuestra experiencia desde las trincheras
De escritorio a Javascript, nuestra experiencia desde las trincherasDe escritorio a Javascript, nuestra experiencia desde las trincheras
De escritorio a Javascript, nuestra experiencia desde las trincheras
 
NETVIBES,QUÍA .
 NETVIBES,QUÍA .  NETVIBES,QUÍA .
NETVIBES,QUÍA .
 
Flujos de trabajo para un desarrollador web frontend
Flujos de trabajo para un desarrollador web frontendFlujos de trabajo para un desarrollador web frontend
Flujos de trabajo para un desarrollador web frontend
 
Blogging for hackers (español)
Blogging for hackers (español)Blogging for hackers (español)
Blogging for hackers (español)
 
Presentacion node
Presentacion nodePresentacion node
Presentacion node
 
Web workers
Web workersWeb workers
Web workers
 
Lecciones aprendidas creando una red social
Lecciones aprendidas creando una red socialLecciones aprendidas creando una red social
Lecciones aprendidas creando una red social
 
Desarrollo Full Stack UAM.net
Desarrollo Full Stack UAM.netDesarrollo Full Stack UAM.net
Desarrollo Full Stack UAM.net
 
React, Flux y React native
React, Flux y React nativeReact, Flux y React native
React, Flux y React native
 
React redux workshop
React redux workshopReact redux workshop
React redux workshop
 

Similaire à HTML5 Web Workers

Aplicaciones web offline ITParral Prieto y Nassi
Aplicaciones web offline ITParral Prieto y NassiAplicaciones web offline ITParral Prieto y Nassi
Aplicaciones web offline ITParral Prieto y Nassi
Guillermo Nassi
 

Similaire à HTML5 Web Workers (20)

expo
expoexpo
expo
 
Aplicaciones web offline ITParral Prieto y Nassi
Aplicaciones web offline ITParral Prieto y NassiAplicaciones web offline ITParral Prieto y Nassi
Aplicaciones web offline ITParral Prieto y Nassi
 
Html5
Html5Html5
Html5
 
S5-DAW-2022S1.pptx
S5-DAW-2022S1.pptxS5-DAW-2022S1.pptx
S5-DAW-2022S1.pptx
 
Wamp server
Wamp serverWamp server
Wamp server
 
introduccion a Ajax
introduccion a Ajaxintroduccion a Ajax
introduccion a Ajax
 
HTML5-Aplicaciones web
HTML5-Aplicaciones webHTML5-Aplicaciones web
HTML5-Aplicaciones web
 
Libreria webduino
Libreria webduinoLibreria webduino
Libreria webduino
 
Barcelona Workshop 2008
Barcelona Workshop 2008Barcelona Workshop 2008
Barcelona Workshop 2008
 
Codemotion 2013 Desarrollo de apps móviles multiplataforma
Codemotion 2013  Desarrollo de apps móviles multiplataformaCodemotion 2013  Desarrollo de apps móviles multiplataforma
Codemotion 2013 Desarrollo de apps móviles multiplataforma
 
JAVASCRIPT_2.ppt
JAVASCRIPT_2.pptJAVASCRIPT_2.ppt
JAVASCRIPT_2.ppt
 
Charla ie
Charla ieCharla ie
Charla ie
 
Ajax
AjaxAjax
Ajax
 
Programacion web-Lenguajes del lado del servidor
Programacion web-Lenguajes del lado del servidorProgramacion web-Lenguajes del lado del servidor
Programacion web-Lenguajes del lado del servidor
 
Curso ajax
Curso ajaxCurso ajax
Curso ajax
 
Curso de php
Curso de phpCurso de php
Curso de php
 
Sistemas Distribuidos basados en la Web
Sistemas Distribuidos basados en la WebSistemas Distribuidos basados en la Web
Sistemas Distribuidos basados en la Web
 
Clase17(introduccion a la web)
Clase17(introduccion a la web)Clase17(introduccion a la web)
Clase17(introduccion a la web)
 
Aplicaciones Web SPA con WebAPI y TypeScript
Aplicaciones Web SPA con WebAPI y TypeScriptAplicaciones Web SPA con WebAPI y TypeScript
Aplicaciones Web SPA con WebAPI y TypeScript
 
5.- PPT 2022 05 U01 T01 Desarrollo de Servicios Web I (1915).pptx
5.- PPT 2022 05 U01 T01 Desarrollo de Servicios Web I (1915).pptx5.- PPT 2022 05 U01 T01 Desarrollo de Servicios Web I (1915).pptx
5.- PPT 2022 05 U01 T01 Desarrollo de Servicios Web I (1915).pptx
 

Plus de Rodolfo Finochietti

Que hay de nuevo en 2013 en la plataforma Microsoft para desarrolladores
Que hay de nuevo en 2013 en la plataforma Microsoft para desarrolladoresQue hay de nuevo en 2013 en la plataforma Microsoft para desarrolladores
Que hay de nuevo en 2013 en la plataforma Microsoft para desarrolladores
Rodolfo Finochietti
 

Plus de Rodolfo Finochietti (20)

Introduction to Rust language programming
Introduction to Rust language programmingIntroduction to Rust language programming
Introduction to Rust language programming
 
C#: Past, Present and Future
C#: Past, Present and FutureC#: Past, Present and Future
C#: Past, Present and Future
 
Go
GoGo
Go
 
Re-bot-lution
Re-bot-lutionRe-bot-lution
Re-bot-lution
 
Azure Functions
Azure FunctionsAzure Functions
Azure Functions
 
Despliegue y Monitoreo de aplicaciones ASP.NET Core en Linux
Despliegue y Monitoreo de aplicaciones ASP.NET Core en LinuxDespliegue y Monitoreo de aplicaciones ASP.NET Core en Linux
Despliegue y Monitoreo de aplicaciones ASP.NET Core en Linux
 
ASP.NET Core 1.0
ASP.NET Core 1.0ASP.NET Core 1.0
ASP.NET Core 1.0
 
Azure IoT Hub
Azure IoT HubAzure IoT Hub
Azure IoT Hub
 
Introduccion a Node.js
Introduccion a Node.jsIntroduccion a Node.js
Introduccion a Node.js
 
IoT y Dispositivos
IoT y DispositivosIoT y Dispositivos
IoT y Dispositivos
 
.NET Multiplataforma
.NET Multiplataforma .NET Multiplataforma
.NET Multiplataforma
 
Windows 10 Developer Readiness
Windows 10 Developer ReadinessWindows 10 Developer Readiness
Windows 10 Developer Readiness
 
Aplicaciones Real-Time con SignalR
Aplicaciones Real-Time con SignalRAplicaciones Real-Time con SignalR
Aplicaciones Real-Time con SignalR
 
ASP.NET 5
ASP.NET 5ASP.NET 5
ASP.NET 5
 
Roslyn: el futuro de C#
Roslyn: el futuro de C#Roslyn: el futuro de C#
Roslyn: el futuro de C#
 
Microsoft 2014 Dev Plataform - Roslyn -& ASP.NET vNext
Microsoft 2014 Dev Plataform -  Roslyn -& ASP.NET vNextMicrosoft 2014 Dev Plataform -  Roslyn -& ASP.NET vNext
Microsoft 2014 Dev Plataform - Roslyn -& ASP.NET vNext
 
Que hay de nuevo en Visual Studio 2013 y ASP.NET 5.1
Que hay de nuevo en Visual Studio 2013 y ASP.NET 5.1Que hay de nuevo en Visual Studio 2013 y ASP.NET 5.1
Que hay de nuevo en Visual Studio 2013 y ASP.NET 5.1
 
Proyectos de Base de Datos con Visual Studio 2013
Proyectos de Base de Datos con Visual Studio 2013Proyectos de Base de Datos con Visual Studio 2013
Proyectos de Base de Datos con Visual Studio 2013
 
ALM con Visual Studio y TFS 2013
ALM con Visual Studio y TFS 2013ALM con Visual Studio y TFS 2013
ALM con Visual Studio y TFS 2013
 
Que hay de nuevo en 2013 en la plataforma Microsoft para desarrolladores
Que hay de nuevo en 2013 en la plataforma Microsoft para desarrolladoresQue hay de nuevo en 2013 en la plataforma Microsoft para desarrolladores
Que hay de nuevo en 2013 en la plataforma Microsoft para desarrolladores
 

Dernier

redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
nicho110
 

Dernier (10)

redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
 
Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptx
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
 
Guia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosGuia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos Basicos
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXI
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 

HTML5 Web Workers

  • 1. HTML5 Web Workers Rodolfo Finochietti
  • 3. HTML5 Web Workers • Sin Web Workers: • Las tareas de larga duración en JavaScript bloquean cualquier otro JavaScript en la pagina • JavaScript puede hacer que se “cuelgue” la UI en algunos browsers • Con Web Workers: • Se agregan capacidades de procesamiento en Background a las aplicaciones Web • Las operaciones en paralelo se pueden correr concurrentemente
  • 4. HTML5 Web Workers • Web Workers se puede usar para • Procesamiento numérico intensivo • Actualización en background de una base de datos remota desde una local • Actualización de precios desde el server • Search queries
  • 6. Usando la API de Web Worker
  • 7. HTML5 Web Workers • No se puede acceder window.document • No hay acceso directo a la pagina ni al DOM • Si bien Web Workers no bloquean al UI consumen CPU y pueden hacer el sistema menos responsivo
  • 8. Como usar Web Workers • Crear un objeto Web Worker y pasarle el archivo JavaScript a ejecutar • Usar la Cross Document Messaging API (postMessage) para comunicarse con el thread principal • En la pagina web: • Configurar un event listener asincrónico para escucharlos mensajes y errores que vengan desde worker • Llamar a postMessage para pasarle información al worker
  • 9. JavaScript //Check if Web Workers are supported if (typeof(Worker) !== "undefined") { document.getElementById("support").innerHTML = “Your browser supports HTML5 Web Workers"; } //Create a new worker //The URL for the JavaScript file can be a relative or //absolute URL with the same origin //(the same scheme, host, and port) as the main page worker = new Worker("echoWorker.js"); //to load additional JavaScript importScripts("helper.js, "anotherHelper.js");
  • 10. JavaScript //Main Page worker.postMessage("Here's a message for you"); //Add event listener worker.addEventListener("message", messageHandler, true); //Process incoming messages function messageHandler(e) { // process message from worker } //Handle errors worker.addEventListener("error", errorHandler, true); //Stop worker worker.terminate();
  • 11. JavaScript //Worker function messageHandler(e) { postMessage("worker says: " + e.data + " too"); } addEventListener("message", messageHandler, true); //Using a Web Worker within a Web Worker var subWorker = new Worker("subWorker.js");
  • 12. Browser Support • Chrome 4.0+ • Firefox 3.5+ • Safari 4.0+ • Opera 10.6+ • IE 10
  • 14. rodolfof@lagash.com http://twitter.com/rodolfof http://shockbyte.net ¡GRACIAS!

Notes de l'éditeur

  1. Google Chrome – every tab is its own program (not one tab within a program). So if one tab goes down, the whole app doesn't crash.