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

150
Vistas
¿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
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