Acabo de escribir una API simple y pequeña para definir el género de una persona. Funciona a través de una solicitud de obtención de una página que me devuelve un objeto JSON.
Este es el código de mi módulo:
'use strict'; const https = require('https'); exports.getGender = function (name) { return new Promise((resolve) => { //send request to api https.get(`https://api.genderize.io?name=${name}`, (resp) => { var data = ''; //replace data resp.on('data', (chunk) => { data += chunk; }); //define information on end of query resp.on('end', () => { var info = JSON.parse(data); //check accuracy of gender if (info.probability >= 0.8) { //check gender if (info.gender == 'male') { resolve('Sehr geehrter Herr'); } else if (info.gender == 'female') { resolve('Sehr geehrte Frau'); } } else { resolve('Sehr geehrte/r Frau / Herr'); } }); }); }); };Y esta es la llamada que hago en el archivo principal:
//get gender of person async function getG(name) { const data = await genderApi.getGender(name); return data; } getG('Tim'); Pero el resultado es solo Promise { <pending> } , si reemplazo los return data con un console.log(data) simplemente funciona bien y me muestra el resultado en la consola, pero realmente lo necesito para devolver el valor porque más tarde on Utilizo esta función en un mensaje de texto para el usuario
La función getG también es asíncrona, por lo que debe usar con la palabra clave await o .then devolución de llamada
const val = await getG('Tim'); // or getG('Tim').then((val) => { console.log(val) })