Estoy usando web workers para hacer un poco de trabajo intensivo de CPU pero tengo el requisito de que el trabajador responda a los mensajes del script principal mientras el trabajador está todavía procesando.Cómo evitar que HTML5 Web Workers se bloquee respondiendo correctamente a los mensajes del padre
Sin embargo, el trabajador no responderá mensajes mientras está bloqueado en un bucle de procesamiento, y no he encontrado una manera de decir sondear la cola de mensajes. Por lo tanto, parece que la única solución es interrumpir el procesamiento en un intervalo para permitir el mantenimiento de cualquier mensaje en la cola.
Las opciones obvias son utilizar un temporizador (digamos con setInterval), sin embargo, he leído que el retraso mínimo entre disparos es bastante largo (http://ajaxian.com/archives/settimeout-delay), lo cual es desafortunado ya que ralentizará mucho el procesamiento.
¿Cuáles son los pensamientos de otras personas sobre esto? Voy a intentar que el trabajador envíe onmessage
a sí mismo al final de cada onmessage
, implementando efectivamente un paso del bucle de procesamiento por evento recibido de sí mismo, pero solo quería ver si alguien tenía alguna idea al respecto.
Gracias,
El enganchar https://stackoverflow.com/a/32269593/632951 – Pacerier