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

265
Vistas
¿Cómo evitar que una función asíncrona lenta bloquee a otras?

Tengo una función de fondo que analiza una gran cantidad de datos de una serie de archivos. El tiempo para consumir un solo archivo puede ser largo, por lo que mi función a veces puede bloquear el motor JS durante 2 o 3 segundos.

 for (let x = 0; x <= dataView.byteLength - 1; x++) strView += String.fromCharCode(dataView.getUint8(x))

Realmente no necesito que esto se ejecute más rápido, es un proceso en segundo plano de baja prioridad. Lo que necesito es que esta función (que es una función asíncrona llamada a través de void y no esperar) no bloquee otras funciones durante 2-3 segundos a la vez durante el procesamiento de un solo archivo.

¿Hay alguna forma de modificar este bucle for para otorgar permiso al bucle de eventos JS para realizar otras tareas en medio del bucle "for" anterior? Intenté esperar una breve promesa de vez en cuando en el bucle, pero eso no parece dar resultado. ¿Lo que estoy tratando de hacer (para evitar que un proceso en segundo plano bloquee las prioridades más altas) realmente solo se puede lograr a través de algo como un Web Worker para una verdadera multiproceso/tarea?

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

0

v2.0

 function sleep(fff) { return new Promise(rs => setTimeout(rs, fff)); } async function slow(count, callback, threshold = 10000) { var i = 0; while (i < count) { callback(i++); if (i % threshold === 0) { await sleep(1); } } } var strView = ''; slow(dataView.byteLength, x => strView += String.fromCharCode(dataView.getUint8(x))).then(() => { console.log(strView); });
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