Как уже упоминалось в комментариях, библиотека запросов не возвращает обещание, а вместо этого работает с обратным вызовом.Вы можете использовать такую библиотеку, как request-обещание , чтобы обойти это.Однако, если вы не хотите делать это по какой-то причине, этот ответ может вам помочь.
Чтобы использовать async / await с библиотекой запросов, вам нужно вручную обернуть вызов в Promise.
async requestToGetCode(id) {
await new Promise((resolve, reject) => {
request(url, (error, response, body) => {
if (body !== 'found_no_results') {
switch (response.statusCode) {
case 200:
this.code = JSON.parse(body);
// this does give me the proper result though
console.log(this.code, 'this.code in requestToGetCode');
resolve();
break;
case 404:
console.log('page not found');
reject('Not found');
break;
default:
// Reject all other cases
reject('Error');
break;
}
} else {
// Reject as we do not receive the correct response
console.log(body, id);
reject('Error');
}
});
});
}
По сути, мы создаем здесь новое Обещание, которое выполнит запрос за нас.В ответ на запрос мы затем вызываем resolve
или reject
в зависимости от результата.