javascript - 如何在非async函數下使用await
某草草
某草草 2017-05-16 13:33:34
0
3
703

await需要在async函式中使用,所以每次我們想要使用await必須先在async函式中定義,然後再呼叫這個async函式。

就比如這樣

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然後再調用,這一個過程我覺得略微麻煩以及重複,所以想問下是否存在什麼辦法優化或者解決這一問題?

某草草
某草草

全部回覆(3)
为情所困

async 可以不需要 await, await 必須依賴 async

左手右手慢动作

async宣告的函數回傳值是Promise物件:

這樣一個函數

async function fn() {}

使用await就需要放在async函數中

async function anthor() {
    await fn()
}

不使用await就當作Promise用

function anthor() {
    fn().then(...).catch(...)
}
滿天的星座

試試這樣

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);
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板