Estoy buscando un escenario real para el uso de la API de Web Workers .
javascript
html
web-worker
Sergey Ilinsky
fuente
fuente
Respuestas:
John Resig (de la fama de jQuery) tiene un montón de ejemplos interesantes del uso de trabajadores web aquí : juegos, gráficos, criptografía.
Otro uso es la E / S web; en otras palabras, sondear URL en segundo plano. De esa manera no bloquea la interfaz de usuario a la espera de resultados de sondeo.
Otro uso práctico: en Bespin, están utilizando Web Workers para resaltar la sintaxis, que no desearía bloquear su edición de código mientras usa la aplicación.
Desde Mozilla : Una forma en que los trabajadores son útiles es permitir que su código realice cálculos intensivos en el procesador sin bloquear el hilo de la interfaz de usuario.
Como ejemplo práctico, piense en una aplicación que tiene una gran tabla de #s (esto es del mundo real, por cierto, tomado de una aplicación que programé hace ~ 2 años). Puede cambiar un # en una tabla a través del campo de entrada y un montón de otros números en diferentes columnas se vuelven a calcular en un proceso bastante intenso.
El antiguo flujo de trabajo era: Cambiar el #. Ve a tomar un café mientras JavaScript procesa los cambios a otros números y la página web no responde durante 3 minutos, después de que lo optimicé al infierno y viceversa. Vuelve con café. Cambiar un segundo #. Repite muchas veces. Haga clic en el botón GUARDAR.
El nuevo flujo de trabajo con los trabajadores podría ser: Cambiar el #. Obtenga un mensaje de estado de que se está recalculando algo, pero puede cambiar otros #. Cambiar más #s. Cuando termine de cambiar, espere hasta que el estado cambie a "todos los cálculos completos, ahora puede revisar los números finales y guardar".
fuente
Los he usado para enviar grandes cantidades de datos desde el navegador al servidor. Obviamente, puede hacer esto con llamadas AJAX regulares, pero si esto ocupa una de las conexiones preciosas por nombre de host. Además, si el usuario realiza una transición de página durante este proceso (por ejemplo, hace clic en un enlace), sus objetos JavaScript de la página anterior desaparecen y no puede procesar devoluciones de llamada. Cuando se utiliza un trabajador web, esta actividad ocurre fuera de banda, por lo que tiene una mejor garantía de que se completará.
fuente
Otro caso de uso:
Comprimir / descomprimir archivos en segundo plano, si tiene muchas imágenes y otros archivos multimedia que se intercambian desde el servidor en formato comprimido.
fuente
<canvas>
), puede obtener los datos de la imagen en un formato comprimido (es decir, png). Mi punto no fue que nunca es apropiado comprimir en JS; mi punto es que en la mayoría de los casos , es no , y para la mayoría de los casos - sobre todo tratando con imágenes, que es lo que esta respuesta habla de - hay una mejor alternativa a rodar su propia compresión.