亚洲免费在线视频-亚洲啊v-久久免费精品视频-国产精品va-看片地址-成人在线视频网

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

javascript - async/await 中await接收的promise的問題

瀏覽:117日期:2023-09-15 16:25:48

問題描述

在async/await中,await接收的需要是一個(gè)promise對(duì)象,那么我這樣寫:

async getAddressList () {this.list = await AreaSvr.getList(320100); }getAddressList().catch((err) => { ... });

AddressSvr.getList = function (pid) { return new Promise((resolve, reject) => { Vue._http.get(’area/get’, {pId: pid}).then( res => {resolve(res.Data); }, err => {reject(err); }); })};

這樣是沒有問題的,AreaSvr.getList中返回的是一個(gè)promise對(duì)象。現(xiàn)在我把AreaSvr.getList封裝一下,加一個(gè)緩存:

let areaList = [];AddressSvr.getAreaList = (level, pid) => {// 接收等級(jí)跟pid兩個(gè)參數(shù),如果已有areaList或者相關(guān)二級(jí)list,直接返回Promise.resolve(...) if (level === 1 && areaList.length !== 0) { return Promise.resolve(areaList) } else if (level === 2) { for (let i = 0; i < areaList.length; i++) { if (areaList[i].AreaId === pid && areaList[i].children.length !== 0) {return Promise.resolve(areaList[i].children) } } } // 這里對(duì)之前的http請(qǐng)求AddressSvr.getList進(jìn)行封裝,在獲取到相關(guān)值之后,進(jìn)行緩存并且返回 return new Promise(// 返回一個(gè)promise對(duì)象,讓await來接收 (resolve, reject) => { AddressSvr.getList(pid).then(res => { if (level === 1) { areaList = res;// 緩存areaList return resolve(areaList); //返回 } for (let i = 0; i < areaList.length; i++) { if (areaList[i].AreaId === pid) { areaList[i].children = res;// 緩存子列表 return resolve(areaList[i].children);// 返回 } }}, err => { reject(err);} ); } );};

async getAddressList () {this.list = await AreaSvr.getAreaList(1, 320100);//這里傳入等級(jí),使用加了緩存的函數(shù)if (this.list.length !== 0) { this.childList = await AreaSvr.getAreaList(2, this.list[0].AreaId);} }

在這里,我在AddressSvr.getList的外面封裝了一層promise做了緩存,這時(shí)候await接收的是AddressSvr.getAddressList 這個(gè)函數(shù)返回的promise了,但是這個(gè)時(shí)候返回的promise無效,直接catch到error了,請(qǐng)問一下我哪邊寫的有問題?

問題解答

回答1:

如果直接catch了,說明寫法沒有問題,可能是業(yè)務(wù)部分出錯(cuò)了,可以把error信息貼出來看看

回答2:

我在上面判斷是否有緩存的地方用的是areaList[i].children.length !== 0,這個(gè)時(shí)候還沒有children,是undefind,所以會(huì)報(bào)錯(cuò)。這個(gè)不是async/await的用法問題,是我自己寫錯(cuò)了。

標(biāo)簽: JavaScript
相關(guān)文章:
主站蜘蛛池模板: 91精品视品在线播放 | 国产亚洲欧美一区二区三区 | 国产精品成人免费视频不卡 | 日本一级特黄大一片免 | 91久久网 | 羞羞一区二区三区四区片 | 九九视频免费精品视频免费 | 国产成人精品日本亚洲网站 | 99视频国产精品 | 美女张开大腿让男人捅 | 亚洲国内精品 | 欧美中文字幕一区 | 亚洲精品资源网在线观看 | 中文精品久久久久国产网址 | 一级做a爱片特黄在线观看免费看 | 无圣光福利视频 | 久久亚洲国产高清 | 91精品国产福利尤物免费 | 91在线免费公开视频 | 二区视频在线 | 亚洲欧美精品一区二区 | 伊人波多野结衣 | 成人欧美一区二区三区 | 久久99精品综合国产首页 | 99精品视频一区在线观看miya | bt天堂国产亚洲欧美在线 | 女人张开腿让男人捅的视频 | 久久成人免费大片 | 欧美性色xo影院在线观看 | 国产精品日本一区二区不卡视频 | 成人精品亚洲 | 国产精品二区三区免费播放心 | 一级做a爰片久久毛片苍井优 | 久久羞羞| 国产看午夜精品理论片 | 久久大胆视频 | 欧美一级免费大片 | 久久国产成人精品 | 扒开双腿猛进入喷水免费视频 | 国产一在线精品一区在线观看 | 国产在线播放一区 |