【Vue3】axios获取数据异步变同步,解决“回调地狱”问题,以及解决通过async和await出现Promise <pending>问题(新手终极解决方案)

相信很多新手在实现axios调用数据时,都遇到“回调地狱”问题,网上找了一整天,又做了N个实验,终于解决了这个问题,在此做个记录,希望跟我一样的新手能减少时间。

1、解决同步的问题,就是执行完axios后,再往下执行!

注意:注意看m_OK的值,加async\await和不加不样的,加上最后就是2,不加最后就是1。


import axios from "axios";

export default async function CsjAxios(CsjData, CsjUrl) {

    var m_OK = "1";

    let ret = await axios({
        url: CsjUrl,
        method: "post",
        data: CsjData,
    })
        .then((result) => {

            sss = JSON2.parse(result.data);
            var d = new Date();//从0开始到11
            m_OK = "2";
        })
        .catch((err) => {
        })
    console.log("==== 注意看m_OK的值,加async\await和不加不样的 ====");
    console.log(m_OK);
    return ret;
}

2、解决通过async和await出现返回的值是Promise <pending>问题

等于,又用一个async和await函数在外面包住了。注意:是两个函数,一个是axios取值函数CsjAxios(),一个是获取CsjAxios()的值的函数LoadData(),,两个函数都有async,await

    async function LoadData() {

      let CsjData = "";  // axios的参数
      let CsjUrl = "asp/Sql/Gron"; // axios的参数

      const res = await CsjAxios(CsjData, CsjUrl);

      console.log("===== res就是获取到的值了!终于解决了!");
      console.log(res);
      mJson.value = res;
      
    }

猜你喜欢

转载自blog.csdn.net/dxnn520/article/details/129111732