Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

83
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda