¿Cómo ejecutar una array de funciones síncronas y asíncronas en Node.js?

Tenemos una variedad de funciones, algunas funciones serán síncronas y otras serán asíncronas . Aprenderemos cómo ejecutarlos todos en secuencia.

Aporte:

listOfFunctions = [
    () => {
        console.log("Synchronous Function);
    },
    async () => new Promise(resolve => {
        setTimeout(() => {
            resolve(true);
            console.log("Asynchronous Function);
        }, 100);
    }),
    .
    .
    .
]

Enfoque 1: tratar todas las funciones como funciones asíncronas y ejecutarlas. Porque en Javascript, incluso si trata una función síncrona como función asíncrona, no hay problema.

Ejemplo:

index.js

// this is our list of functions
let listOfFunctions = [
  () => {
      console.log("Synchronous Function Called");
  },
  async () => new Promise(resolve => {
      setTimeout(() => {
          console.log("Asynchronous Function Called");
          resolve(true);
      }, 100);
  })
]
  
// this function will be responsible
// for executing all functions of list
let executeListOfFunctions = async(listOfFunctions) => {
  for(let func of listOfFunctions){
      await func();
  }
}
  
// calling main function
executeListOfFunctions(listOfFunctions);

Producción:

Enfoque 2: La idea es la misma, pero la implementación es fácil en este enfoque.

Ejemplo:

index.js

// this is our list of functions
let listOfFunctions = [
  () => {
      console.log("Synchronous Function Called");
  },
  async () => new Promise(resolve => {
      setTimeout(() => {
          console.log("Asynchronous Function Called");
          resolve(true);
      }, 100);
  })
]
  
// this function will be responsible
// for executing all functions of list
let executeListOfFunctions = async(listOfFunctions) => {
  return Promise.all(listOfFunctions.map(func => func()));
}
  
// calling main function
executeListOfFunctions(listOfFunctions);

Producción:

Publicación traducida automáticamente

Artículo escrito por pratikraut0000 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *