javascript - 如何在非async函數(shù)下使用await
問題描述
await需要在async函數(shù)中使用,所以每次我們想要使用await必須先在async函數(shù)中定義,然后調(diào)用這個async函數(shù)。
就比如這樣
async function fn(){}fn()
詳細一點的例子
async function asy(){ // 獲取當前城市的位置 獲取熱門城市 獲取所有城市 const [resCityGuess,resCityHot,resCityAll]=await Promise.all([ this.http.get(’api/v1/cities?type=guess’), this.http.get(’api/v1/cities?type=hot’), this.http.get(’api/v1/cities?type=group’) ]) this.cityGuessName=resCityGuess.data.name; this.cityGuessId=resCityGuess.data.id; this.cityHot=resCityHot.data; this.cityAll=resCityAll.data;}asy.apply(this);
每次使用await之前都需要多定義一次async然后再調(diào)用,這一個過程我覺得略微麻煩以及重復(fù),所以想問下是否存在什么辦法優(yōu)化或者解決這一問題?
問題解答
回答1:async 可以不需要 await, await 必須依賴 async
回答2:async聲明的函數(shù)返回值是Promise對象:
這樣一個函數(shù)
async function fn() {}
使用await就需要放在async函數(shù)中
async function anthor() { await fn()}
不使用await就當作Promise用
function anthor() { fn().then(...).catch(...)}回答3:
試試這樣
function asy(){ // 獲取當前城市的位置 獲取熱門城市 獲取所有城市 Promise.all([this.http.get(’api/v1/cities?type=guess’),this.http.get(’api/v1/cities?type=hot’),this.http.get(’api/v1/cities?type=group’) ]).then(values =>{this.cityGuessName=resCityGuess.data.name;this.cityGuessId=values[0].data.id;this.cityHot=values[1].data;this.cityAll=values[2].data; });}asy.apply(this);
相關(guān)文章:
1. android - 安卓做前端,PHP做后臺服務(wù)器 有什么需要注意的?2. docker不顯示端口映射呢?3. mysql - 我用SQL語句 更新 行的時候,發(fā)現(xiàn)全部 中文都被清空了,請問怎么解決?4. python - 子進程執(zhí)行完成為僵尸進程,怎么解決5. python - xpath提取網(wǎng)頁路徑?jīng)]問題,但是缺失內(nèi)容?6. javascript - 求教各位,本地HTML頁面怎么在DIV中嵌套服務(wù)器上的頁面內(nèi)容?不用iframe。7. python-mysql Commands out of sync8. java中返回一個對象,和輸出對像的值,意義在哪兒9. javascript - 給某個類添加一個偽類,這個類有click事件,現(xiàn)在我點擊偽類也觸發(fā)了click事件10. docker images顯示的鏡像過多,狗眼被亮瞎了,怎么辦?
