相信很多新手在实现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;
}