【问题标题】:how to return response of axios in async function [duplicate]如何在异步函数中返回axios的响应[重复]
【发布时间】:2023-03-12 00:09:01
【问题描述】:

我想返回 axios 的响应,但将 console.log 设置为未定义。

getFirstPageData();

async function getFirstPageData() {

    const res =  await getPageData(1) ;

    console.log("res--->", res);
}

async function getPageData(page_num){

  let pageNum = page_num;
  console.log("page_num" , pageNum);

  let path =    "https://......"

  axios.get(path).then(
    (response) => {
        var result = response.data;
        console.log(result);
        return result;
    },
    (error) => {
        console.log(error);
    }
);
}

这是等待还是异步的问题。以任何方式返回此响应。

【问题讨论】:

  • 您的getPageData 不返回任何内容,因此未定义。您在 axios 中使用的 return 特定于您的箭头函数 response => .... return result

标签: node.js express async-await


【解决方案1】:

您需要返回 axios.get() 返回的承诺,这将保持承诺链完整。

我还建议加入拒绝处理程序以将任何错误传播到顶层,再次保持链完整。

getFirstPageData();

async function getFirstPageData() {
    try {
        const res =  await getPageData(1) ;
        console.log("res--->", res);
    } catch (error) {
        console.error('An error occurred:', error);
    }
}

async function getPageData(page_num){

  let pageNum = page_num;
  console.log("page_num" , pageNum);

  let path =    "https://......"

  return axios.get(path).then(
        (response) => {
            var result = response.data;
            console.log(result);
            return result;
        },
        (error) => {
            console.error(error);
            throw error;
        }
    );
}

【讨论】:

    【解决方案2】:

    根据我对您的帖子的评论以及您正在尝试做的事情。 您的 getPageData 应该从 axios 返回承诺,如下所示。

    function getPageData(page_num){
    
      let pageNum = page_num;
      console.log("page_num" , pageNum);
    
      let path =    "https://......"
    
      return axios.get(path).then(
        (response) => {
            var result = response.data;
            console.log(result);
            return result;
        },
        (error) => {
            console.log(error);
        }
    );
    }
    

    从函数getPageData 中释放异步,因为它不是异步函数。它返回一个承诺,您将从const res = await getPageData(1) ; 中获取数据

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-01-24
      • 2015-06-18
      • 2021-07-13
      • 2023-04-02
      • 1970-01-01
      • 2015-08-15
      相关资源
      最近更新 更多