Всем привет, код работает не так, как мне нужно. Я подключаю модуль "request" и присваиваю глобальной переменной значение, которое получаю в ответ (JSON файл), но значение не меняется. Перепробовал, наверное, все, что можно и нельзя. Заранее спасибо за помощь! Вот мой код на Pastebin
Asked
Active
Viewed 27 times
1 Answers
0
request требует время на выполнение, и работает асинхронно позволяя тем самым выполнять другой код
var resp = 0;
request(options, function (error, response) {
if (error) throw new Error(error);
resp = JSON.parse(response.body);
console.log('I\'m second',resp);
//проще всего продолжить работу здесь
});
console.log('I'm first',resp);
т.е. здесь ^ на момент вызова log действительно 0
если очень хочешь писать последовательно, нужно поступить так, но это плохая практика
void async function (){
var request = require('request');
var options = {
'method': 'GET',
'url': 'https://api.covid19api.com/summary',
'headers': {
}
};
var resp = 0;
await new Promise ( resolve =>{
//await валиден только внутри async function
request(options, function (error, response) {
if (error) throw new Error(error);
resp = JSON.parse(response.body);
resolve ();
});
});
console.log(resp);
}()
стоит почитать про Promise, что-бы лучше разобраться в вопросе
lijil
- 332
- 1
- 6
-
Огромное спасибо! Вы очень помогли. – Ilyakov Ivan Jun 21 '20 at 14:31