VUE獲取Promise對(duì)象中PromiseResult中的數(shù)據(jù)(最新推薦)
VUE 項(xiàng)目中 如何獲取Promise對(duì)象中的PromiseResult中的數(shù)據(jù)
問(wèn)題描述
如果想要在接口請(qǐng)求方法的外面拿到請(qǐng)求的結(jié)果,再做相關(guān)數(shù)據(jù)處理,往往我們拿到的卻是一個(gè)Promise對(duì)象,案例如下:
methods: {
getInfoList(id) {
let list = [];
// 接口請(qǐng)求封裝的方法
list = infoStore(id)
console.log('list :>> ', list);
}
}打印結(jié)果

可以看到,請(qǐng)求返回的值放在了Promise對(duì)象的PromiseResult中,但是直接取值又取不出來(lái),這是因?yàn)椋?br />Promise 簡(jiǎn)單說(shuō)就是一個(gè)容器,里面保存著某個(gè)未來(lái)才會(huì)結(jié)束的事件(通常是一個(gè)異步操作)的結(jié)果;
從語(yǔ)法上說(shuō), Promise 是一個(gè)對(duì)象,從中可以獲取異步操作的消息;
所以想要直接獲取到Promise對(duì)象的值,需要通過(guò) async await 來(lái)獲取
解決方案
通過(guò) async await 來(lái)獲取
async 用于申明一個(gè)function是異步的;而await則可以認(rèn)為是 async await的簡(jiǎn)寫(xiě)形式,是等待一個(gè)異步方法執(zhí)行完成的;
async/awiat的使用規(guī)則:
- async和await要一起用;
- async 表示這是一個(gè)async函數(shù), await只能用在async函數(shù)里面,不能單獨(dú)使用;
- async 返回的是一個(gè)Promise對(duì)象,await就是等待這個(gè)promise的返回結(jié)果后,再繼續(xù)執(zhí)行;
- await 等待的是一個(gè)Promise對(duì)象,后面必須跟一個(gè)Promise對(duì)象,但是不必寫(xiě)then(),直接就可以得到返回值;
async getShelfList(id) {
letlist = [];
list = await infoStore(id)
console.log('list :>> ', list);
}打印結(jié)果

總結(jié)
異步獲取Promise對(duì)象的值還可以使用Promise對(duì)象的then方法,但是then方法是在接口請(qǐng)求對(duì)象的里面執(zhí)行數(shù)據(jù)處理的操作
getShelfList(id) {
let list = [];
infoStore(id).then((res) => {
// res則為promise對(duì)象的返回的值,可以在then()方法里面做數(shù)據(jù)處理
list = res.data
})
}兩個(gè)方法使用場(chǎng)景不一樣,可按個(gè)人情況擇優(yōu)使用
以上是個(gè)人經(jīng)驗(yàn),希望對(duì)大家有所幫助!
更新
當(dāng)使用 async await 來(lái)獲取Promise對(duì)象的值的時(shí)候,正常函數(shù)里是沒(méi)有問(wèn)題,但是放在forEach()循環(huán)里面會(huì)報(bào)錯(cuò),對(duì)于這個(gè)問(wèn)題,請(qǐng)參考另外以下文章,此文中將詳細(xì)介紹forEach循環(huán)中不能使用async await異步調(diào)用的原因,以及不同循環(huán)中的使用方法:
如何在 for/forEach/map 循環(huán)里面使用異步調(diào)用 async/await
到此這篇關(guān)于VUE 如何獲取Promise對(duì)象中的PromiseResult中的數(shù)據(jù)的文章就介紹到這了,更多相關(guān)vue 獲取PromiseResult中的數(shù)據(jù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- vue?async?await?promise等待異步接口執(zhí)行完畢再進(jìn)行下步操作教程
- vue循環(huán)中調(diào)用接口-promise.all();按順序執(zhí)行異步處理方式
- web前端Vue報(bào)錯(cuò):Uncaught?(in?promise)?TypeError:Cannot?read?properties?of?nu解決
- Vue Promise解決回調(diào)地獄問(wèn)題實(shí)現(xiàn)方法
- Vue?中?Promise?的then方法異步使用及async/await?異步使用總結(jié)
- vue關(guān)于Promise的使用方式
相關(guān)文章
vue中實(shí)現(xiàn)路由跳轉(zhuǎn)的三種方式超詳細(xì)教程
這篇文章主要介紹了vue中實(shí)現(xiàn)路由跳轉(zhuǎn)的三種方式超詳細(xì)教程,其中聲明式router-link實(shí)現(xiàn)跳轉(zhuǎn)最簡(jiǎn)單的方法,可用組件router-link來(lái)替代a標(biāo)簽,每種方式給大家講解的非常詳細(xì)需要的朋友可以參考下2022-11-11
vue子元素綁定的事件, 阻止觸發(fā)父級(jí)上的事件處理方式
這篇文章主要介紹了vue子元素綁定的事件, 阻止觸發(fā)父級(jí)上的事件處理方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-11-11
vue動(dòng)態(tài)路由加載時(shí)出現(xiàn)Cannot?find?module?xxx問(wèn)題
這篇文章主要介紹了vue動(dòng)態(tài)路由加載時(shí)出現(xiàn)Cannot?find?module?xxx問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-01-01
element自定義表單驗(yàn)證上傳身份證正反面的實(shí)現(xiàn)
表單驗(yàn)證在很多地方都可以用的到,本文主要介紹了element自定義表單驗(yàn)證上傳身份證正反面的實(shí)現(xiàn),文中根據(jù)實(shí)例編碼詳細(xì)介紹的十分詳盡,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03
Vue實(shí)現(xiàn)回到頂部和底部動(dòng)畫(huà)效果
這篇文章主要為大家詳細(xì)介紹了Vue實(shí)現(xiàn)回到頂部和底部動(dòng)畫(huà)效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-07-07
vue的axios使用post時(shí)必須使用qs.stringify而get不用問(wèn)題
這篇文章主要介紹了vue的axios使用post時(shí)必須使用qs.stringify而get不用問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-01-01
vue實(shí)現(xiàn)滑塊拖拽校驗(yàn)功能的全過(guò)程
vue驗(yàn)證滑塊功能,在生活中很多地方都可以見(jiàn)到,使用起來(lái)非常方便,這篇文章主要給大家介紹了關(guān)于vue實(shí)現(xiàn)滑塊拖拽校驗(yàn)功能的相關(guān)資料,需要的朋友可以參考下2021-08-08

