axios本身是没有同步请求的,要实现同步请求,用到的是ES7的async
和await
ES7的异步特性async / await
async
用于声明一个函数是异步的,await
用于声明在一个异步函数中等待语句执行完毕。也就是说await
只能在async
函数中使用。简单示例如下:
const fun1 = async function () {await axios.get('url)
}
Vue中使用async / await
实现同步请求
methods: {fun1: async function () {await axios.get('url)}
}
注意事项
如果同步请求是封装在其他函数中,那么每一个函数都需要做成异步函数,示例如下:
Vue调用的是fun3,但是因为中间做了几次判断,最终在fun1中进行请求,那么涉及到的每一个函数都需要异步化
methods: {fun1: async function () {await axios.get('url)},fun2: async function () {...await this.fun1()...},fun3: async function () {...await this.fun2()...},
}