Как избежать ответа суперагента, разрешающего асинхронную функцию

#javascript #node.js #promise #async-await #superagent

#javascript #node.js #обещание #async-await #суперагент

Вопрос:

У меня есть асинхронная функция с запросом (суперагент) в нем. Каждый раз, когда возвращается ответ от запроса, вся функция немедленно разрешается. Как я могу избежать такого поведения? :/

 getToken: async ()  => {

        
            await request
                .post('https://tokenAdress')
                .field('client_id', process.env.CLIENT_ID)
                .field('client_secret', process.env.CLIENT_SECRET)
                .field('grant_type', 'client_credentials')
                .then( (response) => {

                         // do some stuff with response
                         return resultOfStuffDone;
                }).catch( err => {
                    
                    throw new Error(errorMessages.couldNotGetToken);
                })
 }
  

и …

 async () => {

        let bla = await ApiEndpoints.getToken();

        console.log(bla); // undefined 

}
  

Был бы признателен, если бы кто-нибудь мог помочь.

Ответ №1:

 getToken: async ()  => {

    
        let response = await request
            .post('https://tokenAdress')
            .field('client_id', process.env.CLIENT_ID)
            .field('client_secret', process.env.CLIENT_SECRET)
            .field('grant_type', 'client_credentials')
            .catch( err => {
                
                throw new Error(errorMessages.couldNotGetToken);
            })
     if(response !== undefined){
     //do something
      return resultOfStuffDone
     }
  }
  

При использовании await значение может быть присвоено переменной вместо использования then .

Комментарии:

1. Большое вам спасибо!