0
点赞
收藏
分享

微信扫一扫

【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;

}

举报

相关推荐

0 条评论