Heim > Fragen und Antworten > Hauptteil
await muss in einer asynchronen Funktion verwendet werden. Jedes Mal, wenn wir wait verwenden möchten, müssen wir es also zuerst in der asynchronen Funktion definieren und dann diese asynchrone Funktion aufrufen.
Einfach so
async function fn(){}
fn()
Ein detaillierteres Beispiel
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);
Jedes Mal, wenn Sie „await“ verwenden, müssen Sie „async“ noch einmal definieren und es dann aufrufen. Ich finde diesen Vorgang etwas mühsam und repetitiv, daher möchte ich fragen, ob es eine Möglichkeit gibt, dieses Problem zu optimieren oder zu lösen.
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);