#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. Большое вам спасибо!