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

99
Visualizações
Cómo hacer que el resultado de Promesa todo en orden

Pregunta: la salida del caso 1 es de 0 a 4, que está en orden, mientras que la salida del caso 2 es aleatoria.

Sé que la razón por la cual el resultado del caso 1 está en orden es que la solicitud se envía después de que llega el resultado de la solicitud anterior. En el caso 2 la solicitud no esperará el resultado de la solicitud anterior.

mi pregunta es si hay alguna manera de conservar el resultado del caso 2 en orden también?

caso 1

 const main = async () => { const arr = Array.of(...[1,2,3,4,5]) for (let i=0;i<arr.length;i++) { console.log(`request:${i}`) const res = await request(i) console.log(res) } console.log("next step") } const request = (i:number):Promise<number> => { return new Promise<number>(((resolve, reject) => { setTimeout(()=>{ resolve(i) },Math.random() * 1000) })) }

salida1

 closure request:0 0 request:1 1 request:2 2 request:3 3 request:4 4 next step

caso2

 const main = async () => { const arr = Array.of(...[1,2,3,4,5]) await Promise.all(arr.map(async (v,i) => { console.log(`request:${v}`) const res = await request(v) console.log(`result:${res}`) console.log(res) })).catch((e) => { }) console.log("next step") } const request = (i:number):Promise<number> => { return new Promise<number>(((resolve, reject) => { setTimeout(()=>{ resolve(i) },Math.random() * 1000) })) } main()

salida2

 request:1 request:2 request:3 request:4 request:5 result:4 4 result:5 5 result:1 1 result:3 3 result:2 2 next step
about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

Promise.all() devuelve una matriz de resultados en el mismo orden; simplemente no se resolverán en orden. Podría devolver la respuesta dentro de su promesa de request , y...

 const [result1, result2, result3] = await Promise.all([promise1, promise2, promise3]);

O si quisiera iterar sobre una matriz...

 const results = await Promise.all([promise1, promise2, promise3]);
about 4 years ago · Juan Pablo Isaza Relatório

0

Promise All debe ser una matriz de solicitud o promesa, en map () debe devolver la solicitud. prueba esto

 const main = () => { const arr = Array.of(...[1,2,3,4,5]) Promise.all(arr.map((v,i) => { console.log(`request:${v}`) return request(v) })).then((res)=>{ res.forEach((val)=>{ console.log(`result:${val}`) }) }).catch((e) => { }) console.log("next step") } const request = (i)=> { return new Promise((resolve, reject) => { setTimeout(()=>{ resolve(i) }, Math.floor(Math.random() * 10)*1000) }) } main()

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