如何从 Promise 函数中获取数据
How to get data from Promise function
我有一个问题,不知道为什么我无法从另一个文件的函数中获取 return 数据,这是我尝试的方法
我的file.js
const psm = require("../services/psm");
psm.show(12).then((res) => console.log(res));
我的service.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(() => {});
};
我得到 undefined
return..
你的代码有问题:
show
函数没有明确地 return 任何东西;结果,由 show
函数编辑的 promise return 实现了 undefined 的值
可以在您的代码中进行的改进:
不需要 catch
和 finally
块; catch
块是不必要的,因为拒绝承诺 return 作为 catch
块的结果将需要由调用 show
函数的代码处理。
无论如何,您将需要 catch
方法或调用代码中的块。因此,只需删除 catch
块并允许调用代码捕获并处理错误
show
函数不需要是 async
。您可以 return axios.get
或 axios.get(...).then(...)
的结果
“显示”方法的最终版本:
exports.show = (payload) => {
return axios
.get(`/${module}/${payload}`)
.then((res) => {
return res.data.data;
});
}
您可以将此函数调用为:
psm.show(12)
.then(res => console.log(res))
.catch(error => { /* handle the error */ });
show
函数的替代版本:
exports.show = (payload) => {
return axios.get(`/${module}/${payload}`);
}
您可以将此版本的 show
函数调用为:
psm.show(12)
.then(res => console.log(res.data.data))
.catch(error => { /* handle the error */ });
我有一个问题,不知道为什么我无法从另一个文件的函数中获取 return 数据,这是我尝试的方法
我的file.js
const psm = require("../services/psm");
psm.show(12).then((res) => console.log(res));
我的service.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(() => {});
};
我得到 undefined
return..
你的代码有问题:
show
函数没有明确地 return 任何东西;结果,由show
函数编辑的 promise return 实现了 undefined 的值
可以在您的代码中进行的改进:
-
不需要
catch
和finally
块;catch
块是不必要的,因为拒绝承诺 return 作为catch
块的结果将需要由调用show
函数的代码处理。无论如何,您将需要
catch
方法或调用代码中的块。因此,只需删除catch
块并允许调用代码捕获并处理错误
的结果show
函数不需要是async
。您可以 returnaxios.get
或axios.get(...).then(...)
“显示”方法的最终版本:
exports.show = (payload) => {
return axios
.get(`/${module}/${payload}`)
.then((res) => {
return res.data.data;
});
}
您可以将此函数调用为:
psm.show(12)
.then(res => console.log(res))
.catch(error => { /* handle the error */ });
show
函数的替代版本:
exports.show = (payload) => {
return axios.get(`/${module}/${payload}`);
}
您可以将此版本的 show
函数调用为:
psm.show(12)
.then(res => console.log(res.data.data))
.catch(error => { /* handle the error */ });