0

Всем привет, код работает не так, как мне нужно. Я подключаю модуль "request" и присваиваю глобальной переменной значение, которое получаю в ответ (JSON файл), но значение не меняется. Перепробовал, наверное, все, что можно и нельзя. Заранее спасибо за помощь! Вот мой код на Pastebin

1 Answers1

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