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()...},
}