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

148
Visualizações
Promise.then antes de resolver

Tengo una serie de objetos que necesitan datos de una llamada API.

El punto final de API es diferente para cada objeto.

Estoy iterando la matriz de objetos y creando una promesa para cada uno.

Luego estoy usando Promise.all pasando una serie de promesas.

Una vez que se han resuelto las promesas, necesito actualizar la matriz original de objetos con sus respectivos datos. Para evitar iterar la matriz de objetos dos veces, estoy asignando (a falta de una palabra mejor) el resultado de entonces en la Promesa antes de que se resuelva.

Funciona, pero ¿hay algún problema con este enfoque?

 updateData = async (objects) => { const promises = []; objects.forEach(object => { if (object.data === undefined) { const service = this.serviceFactory.getService(object.serviceKey); promises.push(service[object.serviceFunc](object.id).then(data => object.data = data)); } }); await Promise.all(promises); };
about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

No, todo está bien, pero lo animo a usar async/await para la implementación completa. Algo como esto:

 const processObject = async (object) => { if (object.data === undefined) { const service = this.serviceFactory.getService(object.serviceKey); const data = await service[object.serviceFunc](object.id); object.data = data } return object; } updateData = async (objects) => { const promises = objects.map(processObject); const processedObjects = await Promise.all(promises); };
about 4 years ago · Juan Pablo Isaza Relatório

0

Funciona, pero ¿hay algún problema con este enfoque?

El código que se muestra en sí está bien, si esto podría tener una trampa depende más del lado de la llamada (cómo maneja los datos de updateData y si está claro que los objetos pasados a la función se actualizan).

Con respecto al código en sí: probablemente usaría un map en su lugar para cada uno, lo await forEach de esa devolución de llamada, y lo hace un poco menos propenso a errores con respecto a romper accidentalmente la cadena Promise dentro de la devolución de llamada.

 updateData = async(objects) => { const promises = objects.map(async (object) => { if (object.data === undefined) { const service = this.serviceFactory.getService(object.serviceKey); object.data = await service[object.serviceFunc](object.id); } }); await Promise.all(promises); };

En el caso de que object.data === undefined sea falso, el valor devuelto es undefined , pero eso no es un problema.

about 4 years ago · Juan Pablo Isaza 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