如何从 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
  • 的值

可以在您的代码中进行的改进:

    不需要
  1. catchfinally 块; catch 块是不必要的,因为拒绝承诺 return 作为 catch 块的结果将需要由调用 show 函数的代码处理。

    无论如何,您将需要 catch 方法或调用代码中的块。因此,只需删除 catch 块并允许调用代码捕获并处理错误

  2. show 函数不需要是 async。您可以 return axios.getaxios.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 */ });