es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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]
})
Tags:  , , ,

Answer

  1. Avatar for 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:

    const ABC = (args, dev) => {
      const results = new Array(args.length);
    
      args.forEach(async (fun1, i) => {
        results[i] = await new Promise((resolve) => fun1(resolve));
      });
    
      setInterval(() => {
        if (results.every((res) => res !== undefined)) {
          dev(results);
        }
      }, 50);
    };
    

    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 y await 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 llamada dev 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' ].

Comments are closed.