Maison  >  Questions et réponses  >  le corps du texte

Comment utiliser wait avec des fonctions non asynchrones

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 ?

某草草某草草2733 Il y a quelques jours680

répondre à tous(3)je répondrai

  • 为情所困

    为情所困2017-05-16 13:35:34

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

    répondre
    0
  • ringa_lee

    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(...)
    }

    répondre
    0
  • 滿天的星座

    滿天的星座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);

    répondre
    0
  • Annulerrépondre