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

214
Vistas
¿Cómo obtengo el valor de salida de un método asíncrono como entrada y visualización usando express?

Soy un poco nuevo en Node y Express.

Estoy tratando de crear una API que consume una API externa y devuelve el resultado como entrada a lo que muestro

¿Cómo obtengo el valor de salida de un método asíncrono como entrada y visualización usando el método de envío rápido?

ver mi código expreso a continuación

 const express = require("express"); var AsyncMethod = require("./src/AsyncMethod");//works perfectly const app = express(); const port = 8000; app.get("/url", (req, res) => { var output = ""; var biller = new AsyncMethod(); try { output = await (biller.run()); .then(//need help here console.log("inside Main") res.send(output)) } catch (ex) { console.log("An error occurred"); res.send("An error occurred"); console.log(ex); } });
about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

debe esperar a que se complete la ejecución del método asíncrono utilizando el método .then() y devolver la respuesta de la devolución de llamada.

Uso Async/Await

 const express = require("express"); var AsyncMethod = require("./src/AsyncMethod");//works perfectly const app = express(); const port = 8000; app.get("/url", async (req, res) => { var output = ""; var biller = new AsyncMethod(); try { output = await biller.run(); res.send(output) } catch (ex) { console.log("An error occurred"); res.send("An error occurred"); console.log(ex); } });

Usando promise

 const express = require("express"); var AsyncMethod = require("./src/AsyncMethod");//works perfectly const app = express(); const port = 8000; app.get("/url", (req, res) => { var biller = new AsyncMethod(); biller.run().then(function(output){ res.send(output) }).catch(function(ex){ console.log("An error occurred"); res.send("An error occurred"); console.log(ex); }) });
about 4 years ago · Juan Pablo Isaza Denunciar

0

Miré el proyecto github al que publicaste un enlace en el comentario

.run necesita devolver una Promise si quieres await

Entonces, aquí se explica cómo hacerlo... las 5 líneas adicionales están marcadas //+++

 var BaseSample = require('./BaseSample'); var GetBillers = function(){ //inherit BaseSample.call(this); } GetBillers.prototype.run = function(){ return new Promise((resolve, reject) => { //+++ this.billpayment.get_billers(function(err, res){ if(err) { //error executing request console.log("Error calling get billers "+JSON.stringify(err)); reject(err); //+++ } else{ //check if it was successful var statusCode = res.statusCode; if(statusCode === 200) {//request was successful var billerArray = JSON.parse(res.body).billers; var firstBiller = billerArray[0]; var billerId = firstBiller.billerid; var billername = firstBiller.billername; console.log(billerId+" "+billername); resolve(billerId+" "+billername); //+++ } else{//it was not successful for a reason console.log("FAILED: "+statusCode); reject(statusCode); //+++ } } }); }); //+++ } module.exports = GetBillers;

Ah, y el código que publicaste debería parecerse un poco a

 const express = require("express"); var AsyncMethod = require("./src/AsyncMethod");//works perfectly const app = express(); const port = 8000; app.get("/url", (req, res) => { var biller = new AsyncMethod(); try { const output = await biller.run(); console.log("inside Main") res.send(output)) } catch (ex) { console.log("An error occurred"); res.send("An error occurred"); console.log(ex); } });
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