vida reales real paranormales para muy mexico leer historias fuerte experiencias cosas cortas javascript multithreading iframe

javascript - reales - ¿Iframe se ejecuta en el mismo hilo que el propietario?



historias paranormales reales en mexico (2)

JavaScript es single-treaded. Las pestañas o ventanas separadas pueden ejecutarse en subprocesos o procesos independientes según el navegador, sin embargo, no puede comunicarse entre estas ventanas, por lo que no hay manera de que pueda utilizar explícitamente más de un subproceso o proceso en JavaScript.

Si se trata de una respuesta de IU, Rushakoff tiene una buena respuesta. Mientras se ejecuta JavaScript, no se produce ninguna representación HTML y la interfaz de usuario no responde. Al utilizar los tiempos de espera, el control se puede volver a liberar periódicamente en el hilo de renderización / UI, lo que le da una sensación más receptiva, incluso si solo se ejecuta con un solo hilo.

Tengo un trabajo intensivo de CPU que hacer y no quiero degradar la experiencia del usuario. dado que los trabajadores web ( http://ejohn.org/blog/web-workers/ ) son una característica nueva y no son compatibles con todos los navegadores, pensé en abrir un iframe con HTML + JS que hiciera todo el trabajo sucio y utilizando algunas comunicaciones entre dominios para transmitir los resultados. Desafortunadamente noté que el propietario del iframe sufre del trabajo de la CPU de la ventana del iframe.

¿Este comportamiento es como está diseñado? ¿Hay una manera de resolver esto?


Una forma de simular un tipo de subprocesos múltiples sería hacer que una función de Javascript haga un poco de trabajo y luego llamar a setTimeout con la misma función; entonces la función hará un poco de trabajo y setTimeout llamar a setTimeout , y este ciclo continuará para siempre o hasta que cierren el cuadro o usted señalice que deja de funcionar. MDN tiene un buen ejemplo de cómo configurar esto.

Entre los tiempos de espera, Javascript no debe consumir ningún tiempo de procesador. Puede que tenga que jugar un poco para ver cuánto tiempo deben durar sus tiempos de espera, 1ms es probablemente demasiado corto, pero 1s es definitivamente demasiado largo. Otro factor será la velocidad del procesador de la computadora que ejecuta el trabajo, por lo que es posible que tenga que hacer alguna pseudo-evaluación comparativa por parte del cliente a través de Javascript antes de poder determinar cuánto tiempo demorar cada vez.