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

258
Views
¿Cómo proporcionar metadatos sobre las promesas al llamar a Promise.all()?

Estoy trabajando en un código Javascript que se ve así:

 const arrayOfPromises = getArrayOfPromises(); Promise.all(arrayOfPromises).then(array => doStuff(array));

Necesito cambiar getArrayOfPromises() para devolver información sobre cada promesa; para simplificar, digamos que es un indicador simple de verdadero/falso para cada una. Mi primer instinto fue refactorizar esta función para devolver una matriz de objetos, por ejemplo:

 const getArrayOfObjects = () => { ... return [ { promise: promise1, flag: flag1 }, { promise: promise2, flag: flag2 }, ... { promise: promisen, flag: flagn } ]; }

Sin embargo, lo anterior no funcionaría con Promise.all porque solo funciona directamente con una iteración de objetos Promise sin los objetos envolventes en el medio.

¿Cuál es la forma más sencilla de proporcionar dichos metadatos para cada una de las promesas y luego trabajar con ellos una vez que se hayan resuelto todas las promesas?

about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

Si desea utilizar estos metadatos una vez que se hayan resuelto las promesas y no tiene ningún control sobre los valores que están siendo resueltos por las promesas devueltas por getArrayOfPromises() , simplemente puede llamar a then() en cada promesa por separado en la matriz y hacer que devuelva el valor original combinado con sus metadatos. Aunque asegúrese de reemplazar la promesa original con la promesa devuelta por .then() . Array.prototype.map() lo hace fácil:

 arrayOfPromises = arrayOfPromises.map(promise => promise.then(value => ({ value, flag: true })));

Ejemplo:

 let arrayOfPromises = getArrayOfPromises(); arrayOfPromises = arrayOfPromises.map(promise => promise.then(value => ({ value, flag: true }))); Promise.all(arrayOfPromises).then(array => doStuff(array)); function getArrayOfPromises() { return [sleep(1000), sleep(1500), sleep(2000)]; } function doStuff(array) { console.log(array); } function sleep(ms) { return new Promise(resolve => setTimeout(() => resolve('resolved after ' + ms), ms)); }

Si tiene control sobre lo que devuelve getArrayOfPromises() , simplemente devuelva los metadatos como parte del valor que se está resolviendo.

about 4 years ago · Juan Pablo Isaza Report

0

¿Cuál es la forma más sencilla de proporcionar dichos metadatos para cada una de las promesas y luego trabajar con ellos una vez que se hayan resuelto todas las promesas?

Simplemente coloque los datos en cada valor de resultado. No se trata de metadatos sobre la promesa, sino sobre el valor (?), y no necesita trabajar con ellos hasta que se resuelvan todas las promesas, por lo que los resultados son el lugar perfecto. Las banderas simplemente se convierten en contenido de la array en la que Promise.all(…) .

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!