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

81
Vistas
Ejecutar promesas una tras otra o aplicar tiempos de espera a la promesa

Tengo una función en la aplicación React donde se realizarán tres llamadas http diferentes:

 const handleEditUser = async () => {
 let p1, p2, p3;

 p1 = UserUtils.setProjects(user, client, newProjects);

 p2 = UserUtils.updateRights(user.id, userAuthority);

 p3 = UserUtils.updateUserClient(client, user);

 await Promise.all([p1, p2, p3]);
}

Mi problema es que la solicitud p2 se ejecutará antes de que la solicitud p1 haya finalizado por completo.

Me gustaría crear algunos tiempos de espera o algo más que permita ejecutar p2 después de que p1 haya terminado y p3 después de que p2 haya terminado.

Traté de reemplazar Promise.all[] con las siguientes líneas, pero no resolvió mi problema:

 await p1;
await p2;
await p3;
almost 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

No hay necesidad de Promise.all[]

Su requisito es ejecutar promesas una tras otra, luego async con await funcionará aquí.

Puedes probar de esta manera.

 const handleEditUser = async () => {
 let p1, p2, p3;

 p1 = await UserUtils.setProjects(user, client, newProjects);

 p2 = await UserUtils.updateRights(user.id, userAuthority);

 p3 = await UserUtils.updateUserClient(client, user);
}

Nota: los métodos de UserUtils deberían ser una promesa

almost 4 years ago · Santiago Trujillo Denunciar

0

Lo que está sucediendo:

 const handleEditUser = async () => {
 let p1, p2, p3

 p1 = UserUtils.setProjects(user, client, newProjects) // request p1 starting

 p2 = UserUtils.updateRights(user.id, userAuthority) // request p2 starting

 p3 = UserUtils.updateUserClient(client, user) // request p3 starting

 await Promise.all([p1, p2, p3]) // waiting for all of those to finish
 // but requests are already fired

 // or

 await p1 // waiting for p1 to finish, p2 and p3 are running in parallel
 await p2 // waiting for p2 to finish, p3 can still be running in parallel
 await p3
}

Básicamente, cuando sus métodos UserUtils realmente están iniciando el flujo de trabajo de las promesas. Por lo tanto, debería considerar esperar a que termine una promesa antes de comenzar el siguiente flujo de trabajo:

 const handleEditUser = async () => {
 await UserUtils.setProjects(user, client, newProjects)

 await UserUtils.updateRights(user.id, userAuthority)

 await UserUtils.updateUserClient(client, user)
}
almost 4 years ago · Santiago Trujillo 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