VUE獲取Promise對象中PromiseResult中的數(shù)據(jù)(最新推薦)
VUE 項目中 如何獲取Promise對象中的PromiseResult中的數(shù)據(jù)
問題描述
如果想要在接口請求方法的外面拿到請求的結(jié)果,再做相關(guān)數(shù)據(jù)處理,往往我們拿到的卻是一個Promise對象,案例如下:
methods: { getInfoList(id) { let list = []; // 接口請求封裝的方法 list = infoStore(id) console.log('list :>> ', list); } }
打印結(jié)果
可以看到,請求返回的值放在了Promise對象的PromiseResult中,但是直接取值又取不出來,這是因為:
Promise 簡單說就是一個容器,里面保存著某個未來才會結(jié)束的事件(通常是一個異步操作)的結(jié)果;
從語法上說, Promise 是一個對象,從中可以獲取異步操作的消息;
所以想要直接獲取到Promise對象的值,需要通過 async await 來獲取
解決方案
通過 async await 來獲取
async 用于申明一個function是異步的;而await則可以認為是 async await的簡寫形式,是等待一個異步方法執(zhí)行完成的;
async/awiat的使用規(guī)則:
- async和await要一起用;
- async 表示這是一個async函數(shù), await只能用在async函數(shù)里面,不能單獨使用;
- async 返回的是一個Promise對象,await就是等待這個promise的返回結(jié)果后,再繼續(xù)執(zhí)行;
- await 等待的是一個Promise對象,后面必須跟一個Promise對象,但是不必寫then(),直接就可以得到返回值;
async getShelfList(id) { letlist = []; list = await infoStore(id) console.log('list :>> ', list); }
打印結(jié)果
總結(jié)
異步獲取Promise對象的值還可以使用Promise對象的then方法,但是then方法是在接口請求對象的里面執(zhí)行數(shù)據(jù)處理的操作
getShelfList(id) { let list = []; infoStore(id).then((res) => { // res則為promise對象的返回的值,可以在then()方法里面做數(shù)據(jù)處理 list = res.data }) }
兩個方法使用場景不一樣,可按個人情況擇優(yōu)使用
以上是個人經(jīng)驗,希望對大家有所幫助!
更新
當(dāng)使用 async await 來獲取Promise對象的值的時候,正常函數(shù)里是沒有問題,但是放在forEach()循環(huán)里面會報錯,對于這個問題,請參考另外以下文章,此文中將詳細介紹forEach循環(huán)中不能使用async await異步調(diào)用的原因,以及不同循環(huán)中的使用方法:
如何在 for/forEach/map 循環(huán)里面使用異步調(diào)用 async/await
到此這篇關(guān)于VUE 如何獲取Promise對象中的PromiseResult中的數(shù)據(jù)的文章就介紹到這了,更多相關(guān)vue 獲取PromiseResult中的數(shù)據(jù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
vue中實現(xiàn)路由跳轉(zhuǎn)的三種方式超詳細教程
這篇文章主要介紹了vue中實現(xiàn)路由跳轉(zhuǎn)的三種方式超詳細教程,其中聲明式router-link實現(xiàn)跳轉(zhuǎn)最簡單的方法,可用組件router-link來替代a標簽,每種方式給大家講解的非常詳細需要的朋友可以參考下2022-11-11vue子元素綁定的事件, 阻止觸發(fā)父級上的事件處理方式
這篇文章主要介紹了vue子元素綁定的事件, 阻止觸發(fā)父級上的事件處理方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-11-11vue動態(tài)路由加載時出現(xiàn)Cannot?find?module?xxx問題
這篇文章主要介紹了vue動態(tài)路由加載時出現(xiàn)Cannot?find?module?xxx問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-01-01element自定義表單驗證上傳身份證正反面的實現(xiàn)
表單驗證在很多地方都可以用的到,本文主要介紹了element自定義表單驗證上傳身份證正反面的實現(xiàn),文中根據(jù)實例編碼詳細介紹的十分詳盡,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-03-03vue的axios使用post時必須使用qs.stringify而get不用問題
這篇文章主要介紹了vue的axios使用post時必須使用qs.stringify而get不用問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-01-01