Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

107
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda