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然後再調用,這一個過程我覺得略微麻煩以及重複,所以想問下是否存在什麼辦法優化或者解決這一問題?
ringa_lee2017-05-16 13:35:34
async宣告的函數回傳值是Promise物件:
這樣一個函數
async function fn() {}
使用await就需要放在async函數中
async function anthor() {
await fn()
}
不使用await就當作Promise用
function anthor() {
fn().then(...).catch(...)
}
滿天的星座2017-05-16 13:35:34
試試這樣
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);