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

180
Vistas
Alias una función asíncrona con espera en ES6

Supongamos que implementé la función fA como una llamada síncrona , mientras que en otro módulo, dicha funcionalidad se implementa con un nombre diferente (por ejemplo, fB ) y como una llamada asíncrona .

Para usar el nuevo módulo, no quiero cambiar cada llamada existente de mi función fA si es posible. Asi que,

¿Hay alguna manera de que yo le dé a esa llamada de función asíncrona fB un alias como fA ? Algo como, por ejemplo:

const fA = await fB

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

0

No, no puedes hacerlo de esa manera. await solo funciona con la promesa de que su función devuelve, no con una función en sí misma.

Y no hay forma de convertir una interfaz asíncrona en una síncrona, simplemente no se puede hacer en Javascript. Entonces, si todo su código que usaba fA() sincrónico ahora quiere usar fB() asíncrono que devuelve una promesa, tendrá que cambiar en todos los lugares a los que ahora llama fA() para usar la promesa de que fB() devuelve marchitar con await o .then() . No hay manera de evitar eso.

Por supuesto, si nos mostró el código real para fA() y para fB() y el código que usa fA() , podríamos tener ideas más específicas sobre cómo adaptar mejor el código existente que llama a fA() .

En este momento, su pregunta es una pregunta teórica, por lo que todo lo que podemos ofrecerle es una respuesta teórica. Las respuestas de Stackoverflow a menudo pueden ser más útiles con código real, por lo que podemos ofrecer sugerencias específicas que se ajusten a su código real.


Tenga en cuenta que podría tener la tentación de intentar hacer un contenedor para fB() como este:

 function fA() { return await fB(); }

Pero no puede hacer eso porque para usar await , debe hacerlo async :

 async function fA() { return await fB(); }

Que es realmente lo mismo que:

 function fA() { return fB(); }

Lo que significa que el envoltorio fA() sigue devolviendo una promesa tal como lo hizo fB() (todas las funciones async devuelven una promesa), por lo que este envoltorio no logra nada para la persona que llama.


Para usar una función asíncrona, la persona que llama debe usar cualquier mecanismo de llamada asíncrona que use la función (devolución de llamada, promesa, evento, etc.). Entonces, cambiar de una función síncrona que devuelve directamente un valor a una función asíncrona que comunica el resultado a través de una promesa requiere cambiar el código de llamada. No hay manera de evitar eso.

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