如何利用 axios 实现同步请求呢?
事实上,axios 不能直接支持同步请求,但是我们可以利用 Promse 的 await 语句来实现同步的,前提是所有调用链条上的方法都必须定义为 async 的方法。
第一步,定义 axios 同步请求方法:
async function queryData() {
// 同步请求
let resultData = [];
const dataUrl = '/rule/queryData';
try {
const res = await request({
url: dataUrl,
method: 'post',
});
if (res.success) { // 查询到结果,返回数据
resultData = res.data;
}
} catch (err) {
console.log(err);
}
return resultData;
}
第二步,调用:
async processGetData(){
let tableFieldInfos = await queryData();
// 正常使用
}
实现要点:
一旦定义为 async 的函数调用链条都必须定义为 async 且使用 await ,否则就会得到一个 Promise 对象,必须处理 Promise 的 then 的逻辑。