Comment utiliser wait avec des fonctions non asynchrones
某草草
某草草 2017-05-16 13:33:34
0
3
702

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 ?

某草草
某草草

répondre à tous(3)
为情所困

async ne nécessite pas d'attente, wait doit s'appuyer sur async

左手右手慢动作

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(...)
}
滿天的星座

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);
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal