Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

355
Vistas
¿Cómo bloquear el hilo en javascript de bajo consumo?

Quiero parchear el objeto de alert en el navegador para mostrar texto adicional, pero necesito esperar algunos datos para mostrar el contenido necesario en la alerta. Sin embargo, no puedo posponer la llamada de alert .

Además, no conozco una forma de cerrar la alerta y mostrar otra alerta sin una acción del usuario (si existe, también puede resolver mi problema).

Entonces, tengo que esperar algunos datos, pero no puedo romper el comportamiento de alert , que bloquea la ejecución del código.

Para esperar una respuesta, puedo hacer algo como esto:

 var start = performance.now(); while(true) { var time = performance.now() - start; if (time >= 3000) break; } console.log('done');

Pero en lugar de verificar el temporizador, verificaré algunos datos.

De esta manera debería funcionar, pero esto es terrible para el rendimiento, porque es lo opuesto a la alert , que simplemente congela el hilo y no hace nada hasta el cuadro de diálogo de cierre, y cargaremos la CPU con trabajo inútil.

¿Es posible congelar un hilo para ser más eficiente energéticamente?

Tengo que congelar el hilo hasta que obtenga algunos datos de un trabajador.

¿Por qué la promesa no resuelve tu problema?

Promises no bloquea un hilo principal, por lo que no reproduce el comportamiento de alert que necesito.

El hilo de bloqueo no es fácil de usar y no es que necesite esperar algunos datos

Lo sé, y esta nota es lo suficientemente justa para el desarrollo de páginas web y aplicaciones.

Pero este caso es especial. Desarrollo una función para una extensión del navegador, para traducir alertas. La extensión del navegador no debe modificar el comportamiento de la página. Entonces, cuando un sitio web está llamando alerta, el hilo debe congelarse. La extensión del navegador no debe posponer una llamada de alert para evitar un comportamiento inesperado en la página.

Puede ver la característica explicada aquí: Feat: Implementar traducción opcional de alertas y registros de consola #102

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

La única forma en que puedo pensar en "bloquear" sin consumir CPU sería hacer una XMLHttpRequest síncrona (que está en desuso porque el bloqueo no es fácil de usar). Deberá configurar un servidor que pueda leer la carga útil de la solicitud y responder después de la cantidad de tiempo especificada.

 const xh = new XMLHttpRequest(); xh.open('GET', urlToYourServer, false); xh.send('3');

donde ese '3' es el cuerpo de la solicitud que el servidor analiza (y responde después de 3 segundos).

Dicho esto, no debe hacer esto : es un enfoque muy poco elegante y poco amigable para el usuario. Evitará que ocurra cualquier otra acción (incluido el repintado del navegador y otras solicitudes) mientras esto sucede. Es mejor esperar adecuadamente por lo que necesite (ya sea a través de una .then , una devolución de llamada o algo más), pero sin más contexto en la pregunta, no está claro cómo lograr esto exactamente.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda