Saltar al contenido

Cómo exportar una función asíncrona desde un módulo de nodo

Después de de una extensa recopilación de datos dimos con la respuesta esta preocupación que presentan algunos los lectores. Te compartimos la respuesta y nuestro deseo es que te sea de gran ayuda.

Solución:

Para activar la palabra clave await, debe tenerla dentro de una función asíncrona.

const db = require("dataprovider");
...
let result = getUserNames();

async function getUserNames() 
    return await db.GetUsernames();

Consulte http://javascriptrambling.blogspot.com/2017/04/to-promised-land-with-asyncawait-and.html para obtener más información.

Además, solo como un FYI, es una convención de código comenzar la función con minúsculas, a menos que esté devolviendo una clase.

async: el patrón de espera realmente hace que su código sea más fácil de leer. Pero el nodo no permite esperas globales. Solo puede esperar un flujo asíncrono. Lo que intenta hacer es esperar un flujo asincrónico externo. Esto no está permitido. Esta es una especie de antipatrón para la aplicación de nodos. Cuando tratamos con promesas, lo que realmente hacemos es generar un flujo asíncrono en nuestro programa. Nuestro programa continúa sin esperar promesa. Por lo tanto, puede exportar sus funciones como asíncronas, pero no puede esperarlas fuera del flujo asíncrono. por ejemplo.

const db = require('dataprovider');
...
let result = (async () => await db.GetUserNames())();
console.log(result); // outputs: Promise   

Por lo tanto, el patrón async-await funciona para el flujo asíncrono. Por lo tanto, úselos dentro de las funciones asíncronas, para que el nodo pueda ejecutarlas de forma asíncrona. Además, también puede esperar Promesas. por ejemplo.

let fn = async () => await new Promise( (resolve, reject)=>... );
fn().then(...);

Aquí ha creado la función asíncrona ‘fn’. Esta función es entonces posible. también puede esperar ‘fn’ dentro de otra función asíncrona.

let anotherFn = async () => await fn();
anotherFn().then(...);

Aquí estamos esperando la función asíncrona dentro de una función asíncrona. El patrón Async-Await hace que su código sea legible y conciso. Esto se refleja en grandes proyectos.

Más adelante puedes encontrar las acotaciones de otros gestores de proyectos, tú incluso tienes la habilidad insertar el tuyo si te gusta.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

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