Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

195
Visualizações
Nodejs espera hasta que se complete la función asíncrona e imprime los resultados

Quiero esperar a que se complete la solicitud HTTP POST y luego devolver la respuesta a la función de la persona que llama. Obtengo Indefinido cuando imprimo los resultados recibidos.

He definido el método de publicación de la siguiente manera:

 // httpFile.js const axios = require('axios'); module.exports = { getPostResult: async function(params) { console.log("getPostResult async called..."); var result = await axios.post("https://post.some.url", params) .then ((response) => { console.log("getPostResult async success"); return {response.data.param}; }) .catch ((error) => { console.log("getPostResult async failed"); return {error.response.data.param}; }); } }

Y lo estoy llamando de esta manera:

 // someFile.js const httpFile = require('./httpFile'); // Called on some ext. event async function getPostResult() { var params = {var: 1}; var result = await httpFile.getPostResult(params); // Getting Undefined console.log("Done Result: " + JSON.stringify(result)); }

No quiero manejar .then y .catch en la función de llamada, ya que quiero devolver los diferentes valores según el resultado POST.

¿Cómo debo esperar la respuesta y obtener los resultados de retorno?
En el código anterior, obtengo las declaraciones de registro como se esperaba y el "Resultado terminado" se imprime al final después de que regresa 'getPostResult'.

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

está utilizando tanto await como . .then es por eso que devuelve indefinido.

así es como debería verse

 // httpFile.js const axios = require('axios') module.exports = { getPostResult: async function (params) { try { const res = await axios.post('https://post.some.url', params) return res.data } catch (error) { // I wouldn't recommend catching error, // since there is no way to distinguish between response & error return error.response.data } }, }

si desea detectar un error fuera de esta función, este es el camino a seguir.

 getPostResult: async function (params) { const res = await axios.post('https://post.some.url', params) return res.data },
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda