Tengo un problema, no sé por qué no puedo obtener datos de retorno de la función en otro archivo, esto es lo que intento.
mi archivo.js
const psm = require("../services/psm"); psm.show(12).then((res) => console.log(res));mi servicio.js
const axios = require("../plugins/axios").default; const module = "psm"; exports.show = async (payload) => { await axios .get(`/${module}/${payload}`) .then((res) => { return res.data.data; }) .catch((err) => { return Promise.reject(err.response); }) .finally(() => {}); }; obtengo retorno undefined ..
Problemas en tu código:
show function no devuelve nada explícitamente; como resultado, la promesa devuelta por la función show se cumple con el valor de undefinedMejoras que se pueden hacer en su código:
los bloques catch y finally no son necesarios; catch block no es necesario porque la promesa rechazada devuelta como resultado de catch block deberá ser manejada por el código que llama a la función show .
Necesitará el método de catch o bloque en el código de llamada de todos modos. Entonces, simplemente elimine el bloque catch y permita que el código de llamada atrape y maneje el error
La función show no necesita ser async . Simplemente puede devolver el resultado de axios.get o axios.get(...).then(...)
Versión final del método "mostrar":
exports.show = (payload) => { return axios .get(`/${module}/${payload}`) .then((res) => { return res.data.data; }); }Puedes llamar a esta función como:
psm.show(12) .then(res => console.log(res)) .catch(error => { /* handle the error */ }); Versión alternativa de la función show :
exports.show = (payload) => { return axios.get(`/${module}/${payload}`); } Puede llamar a esta versión de la función show como:
psm.show(12) .then(res => console.log(res.data.data)) .catch(error => { /* handle the error */ });