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

251
Vistas
¿Cómo asignar dinámicamente una matriz a funciones asíncronas o sincronizadas?

Supongamos que tengo la siguiente matriz:

 const routes = [ { isAsync: true }, { isAsync: false }, { isAsync: true }, ]

¿Cómo puedo asignar esto a funciones asíncronas o de sincronización? Algo como lo siguiente no funciona:

 routes.map(({ isAsync }, index) => [isAsync ? 'async' : ''] () => { console.log('isAsync: ', isAsync, index) })

Podría algo como,

 routes.map(({ isAsync }, index) => isAsync ? async () => { console.log('isAsync: ', isAsync, index) } : () => { console.log('isAsync: ', isAsync, index) })

Pero me pregunto si es posible hacerlo de la forma en que lo intento en el primer ejemplo.

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Estoy de acuerdo con el comentario de @DBS de que su segunda opción se ve bien. Sin embargo, para completar, aquí hay una solución:

 const AsyncFunction = Object.getPrototypeOf(async function() {}).constructor const routes = [{ isAsync: true }, { isAsync: false }, { isAsync: true }, ]; const funcWithParams = routes.map(({ isAsync }, index) => new Object({ 'func': (isAsync ? Function : AsyncFunction).apply(this, ['isAsync', 'index', `console.log('isAsync: ', isAsync, index)`]), 'isAsync': isAsync, 'index': index })); funcWithParams.forEach((funcWithParam) => funcWithParam.func(funcWithParam.isAsync, funcWithParam.index));

Explicación:

Para la función, la documentación dice :

Cada función de JavaScript es en realidad un objeto de Function

Y casi lo mismo para la función asíncrona:

En JavaScript, cada función asíncrona es en realidad un objeto AsyncFunction .

Con una nota al margen:

Tenga en cuenta que AsyncFunction no es un objeto global. Se puede obtener con el siguiente código: Object.getPrototypeOf(async function(){}).constructor

Su requisito para construir dinámicamente una función / una función asíncrona es posible si llama al constructor de cada prototipo. para que esto se logre, llámalo con apply .

about 4 years ago · Juan Pablo Isaza Denunciar

0

 const routes = [{ isAsync: true }, { isAsync: false }, { isAsync: true }, ]; const result = routes.map(function({ isAsync }, index) { return isAsync ? this.async_fn.bind(null, isAsync, index) : this.fn.bind(null, isAsync, index) }, { fn: (isAsync, index) => { console.log('isAsync:', isAsync, index) }, async_fn: async(isAsync, index) => { console.log('isAsync:', isAsync, index) }, });

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