Maison > Questions et réponses > le corps du texte
await doit être utilisé dans une fonction asynchrone, donc chaque fois que nous voulons utiliser wait, nous devons d'abord le définir dans la fonction asynchrone, puis appeler cette fonction asynchrone.
Juste comme ça
async function fn(){}
fn()
Un exemple plus détaillé
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);
Chaque fois que vous utilisez wait, vous devez définir async une fois de plus, puis l'appeler. Je trouve ce processus un peu gênant et répétitif, j'aimerais donc demander s'il existe un moyen d'optimiser ou de résoudre ce problème ?
ringa_lee2017-05-16 13:35:34
La valeur de retour de la fonction déclarée par async est un objet Promise :
Une telle fonction
async function fn() {}
Pour utiliser wait, vous devez le mettre dans la fonction async
async function anthor() {
await fn()
}
Si vous n'utilisez pas wait, utilisez-le simplement comme promesse
function anthor() {
fn().then(...).catch(...)
}
滿天的星座2017-05-16 13:35:34
Essayez ceci
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);