Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

263
Views
¿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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!