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

145
Views
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 answers
Answer question

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 Report

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 Report
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!