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

271
Views
¿Cuál es la mejor manera de pausar una operación larga en JavaScript?

Estoy procesando un número desconocido de elementos en un bucle. El procesamiento de cada elemento lleva un tiempo variable. Como la operación general es larga y para darle más control al usuario final, quiero proporcionar un botón de pausa.
Los elementos a procesar son proporcionados por una función de generador de terceros y no puedo modificarlos. Por lo tanto, se desconoce el número total de elementos.

El siguiente es mi intento de implementar la función:

 let processed = 0; let paused = false; let resume = () => {}; // a third party function, which I can't modify async function* getItems() { for (;;) yield 1; } // placeholder for a lengthy operation async function process(item) { return new Promise(resolve => setTimeout(resolve, 1000)); } // is this a better way to implement pause? async function enforcePause() { if (paused) return new Promise(resolve => {resume = resolve}); else return Promise.resolve(); } btn.addEventListener('click', () => { if (paused) { resume(); paused = false; btn.textContent = 'Pause'; } else { paused = true; btn.textContent = 'Resume'; } }); // a lengthy operation async function processAll() { for await (let item of getItems()) { await process(item); counter.textContent = ++processed; await enforcePause(); } } processAll();
 <p>Progress: <span id="counter">0</span></p> <button id="btn">Pause</button>

Mis consultas son:

  1. ¿Hay una mejor manera de implementar esto? ¿Debería buscar una biblioteca?
  2. Si no, ¿qué mejoras se pueden hacer al código anterior? alguna advertencia?
  3. Si el número total de elementos fuera finito y los elementos estuvieran almacenados en una colección, ¿existe una mejor solución posible?
about 4 years ago · Juan Pablo Isaza
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!