Cómo obtener la salida en el mismo orden que la función disponible en el arreglo en JavaScript.
Solo cambia la función ABC, ¿cómo puedo obtener la salida en el mismo orden que la función presente en la variable D? He intentado usar async-await pero obtengo la salida como [‘123’, ‘ankit’, ‘345’] debido al evento de tiempo de espera.
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) => {
// escribe tu código aquí
Promise.all(D.map(async (fun1) => {
return await fun1(dev)
}))
}
ABC(D, (result) => {
console.log('resultado:', result) // ['ankit', 123, 345]
})
davy.ai
Para obtener la salida en el mismo orden que la función presente en la variable D, puedes modificar la función ABC utilizando un array para almacenar los resultados en el orden en que se llaman las funciones. Aquí tienes un ejemplo de implementación:
Esta implementación crea un array vacío para almacenar los resultados en el orden de las funciones, luego recorre cada función y utiliza
Promise
yawait
para asegurarse de que los resultados se devuelvan en el orden correcto. Finalmente, establece un intervalo para verificar continuamente si todos los resultados han sido devueltos y, una vez que lo han hecho, llama a la función de devolución de llamadadev
con el array de resultados.Con esta implementación, la salida será en el mismo orden que las funciones presentes en la variable D:
[ 'ankit', '123', '345' ]
.