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

172
Vistas
¿Cómo puedo invocar funciones de estilo de devolución de llamada al mismo tiempo?

(Se cerró una versión anterior de esta pregunta como un dup de cómo invocar funciones asíncronas en un bucle. Esta versión establece claramente que las funciones no son asíncronas)

Tengo varias funciones de estilo de devolución de llamada que no se pueden modificar. Solo cambiando la función ABC, ¿cómo puedo obtener la salida en el mismo orden que la función presente en la variable D? Intenté usar async-await pero obtuve el resultado como ['123', 'ankit', '345'] debido al evento de tiempo de espera.

https://jsfiddle.net/ankigg1602/unrxv3k6

 const A = (dev) => { setTimeout(() => { dev('ankit') }, 300) } const B = (dev) => { setTimeout(() => { dev('123') }, 50) } const C = (dev) => { setTimeout(() => { dev('345') }, 500) } const D = [A, B, C] const ABC = (args, dev) => { // write your code here Promise.all(D.map(async (fun1) => { return await fun1(dev) })) } ABC(D, (result) => { console.log('result:', result) // ['ankit', 123, 345] })
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

La idea es prometer las funciones de estilo de devolución de llamada. A continuación, se crea una promesa para cada uno que se resuelve cuando la función llama a su devolución de llamada.

Asigne sobre promisfy para producir una matriz de funciones asíncronas. Invoque a cada uno de ellos para recopilar una serie de promesas, luego resuelva las promesas simultáneamente con Promse.all()

 const A = (dev) => { setTimeout(() => { dev('ankit') }, 300) } const B = (dev) => { setTimeout(() => { dev('123') }, 50) } const C = (dev) => { setTimeout(() => { dev('345') }, 500) } const D = [A, B, C] const ABC = async(args, dev) => { const promisify = fn => () => new Promise(resolve => fn(resolve)); const promises = args.map(fn => promisify(fn)()); Promise.all(promises).then(dev) } ABC(D, (result) => { console.log('result:', result) // ['ankit', 123, 345] })

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