一文教會你vue中使用async和await
引言
在我們進行實際開發(fā)中會遇到異步請求的問題,這時候我們的異步請求的存在就非常的具備合理性了!接下來將會講述異步編程終級解決方案async/await。
async和await定義
async 是異步的意思,而 await 是等待的意思,await 用于等待一個異步任務執(zhí)行完成的結(jié)果。
1.async/await 是一種編寫異步代碼的新方法(以前是采用回調(diào)和 promise)。
2. async/await 是建立在 promise 的基礎(chǔ)上。
3. async/await 像 promise 一樣,也是非阻塞的。
4. async/await 讓異步代碼看起來、表現(xiàn)起來更像同步代碼。
使用場景
在實際開發(fā)中,相信大家都會遇到關(guān)于發(fā)送請求獲取數(shù)據(jù)的問題,例如:如果你遇到了等第一個請求返回數(shù)據(jù)完,再執(zhí)行第二個請求(可能第二個請求要傳的參數(shù)就是第一個請求接口返回的數(shù)據(jù))這個問題,該怎么去處理呢?由于我們在不使用異步請求的情況下,默認發(fā)送多個請求是同步執(zhí)行的,就會導致我們也不知道到底是哪個接口優(yōu)先被執(zhí)行?。?!
所以,我們必須要學會使用async/await!
實戰(zhàn)場景
話不多說,直接上代碼:
const datas = async ()=> {
await request.selectPies(Route.path.split('/')[3]).then(res=>{
states.ids = res.obj
console.log(res)
})
//查詢發(fā)帖子用戶信息
await request.selectUsers(states.ids).then(res=>{
console.log(res.obj)
})
}
datas()
這里是在vue3語法糖中使用異步請求,從代碼看出,第二個接口要使用第一個接口返回的數(shù)據(jù),因此使用了異步請求。
補充:vue中async await請求處理
Promise.all() 用法示例:
const wait = ms => new Promise((resolve, reject) => {
setTimeout(() => {
console.log(`wait ${ms}ms`)
resolve()
}, ms)
})
const PA = Promise.all([wait(3000), wait(1000), wait(2000)])
// 依次打?。簑ait 1000ms wait 2000ms wait 3000msasync-await 同時觸發(fā)多個異步操作示例
const wait = ms => new Promise((resolve, reject) => {
setTimeout(() => {
console.log(`wait ${ms}ms`)
resolve()
}, ms)
})
;(async () => {
await Promise.all([wait(3000), wait(1000), wait(2000)])
// 依次打?。簑ait 1000ms wait 2000ms wait 3000ms
})()問題:接口B需要接口A返回的數(shù)據(jù),如果同時請求,控制不了返回速度,會出現(xiàn)B快于A,
實現(xiàn):
async表示函數(shù)里有異步操作,
await表示緊跟在后面的表達式需要等待結(jié)果。


methods: {
fetchData: async function () {
var that = this
var code = Store.fetchYqm();
let params = {
inviteCode: code
}
const response = await http.post(params,api.getCode)
var resJson = response.data;
}
}小結(jié)
在現(xiàn)在以前后端分離開發(fā)的模式下,需要訪問后端接口,我們必須要懂得什么是異步請求,異步請求很簡單,就是給接口的訪問加上了順序,防止它們無厘頭的不受順序限制發(fā)送請求!
到此這篇關(guān)于vue中使用async和await的文章就介紹到這了,更多相關(guān)vue使用async和await內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
前端Vue通過Minio返回的URL下載文件實現(xiàn)方法
Minio是一個靈活、高性能、開源的對象存儲解決方案,適用于各種存儲需求,并可以與云計算、容器化、大數(shù)據(jù)和應用程序集成,這篇文章主要給大家介紹了關(guān)于前端Vue通過Minio返回的URL下載文件實現(xiàn)的相關(guān)資料,需要的朋友可以參考下2024-07-07

