Solo cambie 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.
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] })Dado que el orden de ejecución depende del índice en la matriz de funciones, no del tiempo de ejecución, simplemente puede usar un bucle for:
const A = dev => new Promise(resolve => setTimeout(() => { dev('ankit'); resolve(); }, 300) ); const B = dev => new Promise(resolve => setTimeout(() => { dev('123'); resolve(); }, 50) ); const C = dev => new Promise(resolve => setTimeout(() => { dev('345'); resolve(); }, 500) ); const ABC = async (args, dev) => { for(let i = 0; i < args.length; i++) { await args[i](dev); } } const run = (async () => { await ABC([A, B, C], result => console.log('result:', result)); })();