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

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

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

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