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

151
Views
¿Cómo hago para que la interfaz de usuario se actualice en bucle usando forEach?
 Promise.all([ seperatingDMCM(), compileDirectMessage(), renderingResult(), addResultButtonListener(), ]);

Tengo una barra de progreso en mi interfaz de usuario y tengo 4 funciones mencionadas anteriormente, cada una de las cuales devuelve una Promesa. Tengo un bucle dentro de la primera función que separa DMCM(), que manejará todos mis datos. Quiero incrementar la barra de progreso con cada incremento del ciclo. Lo que significa que cada iteración del bucle debe ser asíncrona, por lo que la interfaz de usuario se actualizará y solo después se repetirá el bucle. Cuando el ciclo haya terminado, quiero devolver una promesa para que las otras funciones comiencen a ejecutarse. Me enfrento a un problema de que la barra de progreso no funciona como se supone y se invoca inmediatamente cuando seperatingDMCM() devuelve la promesa () y no de forma asíncrona. Esta barra de progreso se actualiza inmediatamente al 100 % en la página siguiente en lugar de actualizaciones en vivo con un pequeño incremento en la página actual.

Esta es mi función updateUI:

 function startProgressBar(i, arr) { return new Promise((resolve) => { setTimeout(() => { i = (i * 100) / arr.length; console.log(i); let elem = document.getElementById("progressBar"); if (i < 100) { elem.innerText = i + "%"; elem.style.width = i + "%"; elem.innerHTML = i + "%"; resolve(); } }, 0); }); }

Esta es mi primera función en la que quiero actualizar la interfaz de usuario por iteración de bucle

 function seperatingDMCM() { const contentType = "Content type"; return new Promise((resolve) => { rowObject.forEach(async (row, index) => { const creatingInts = () => { console.log("CreatedInt at", index); row["Date created (UTC)"] = ExcelDateToJSDate( row["Date created (UTC)"] ); if ( row[contentType] !== "DM" && row.hasOwnProperty("Falcon user name") ) { publicCommentsCount++; interaction = { row : row}; compiledInteractions.push(interaction); interaction = {}; } else { dmData.push(row); } }; startProgressBar(index, rowObject).then(creatingInts()); }); quickSort(dmData, "Falcon URL"); console.log("SORTED", dmData); console.log(workbook); console.log("Rows", rowObject); resolve(); }); }
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!