NodeJS Запрос на возврат JSON из функции - PullRequest
0 голосов
/ 12 февраля 2019

Я прочитал пару постов об этом здесь (обратные вызовы), но я до сих пор не до конца понимаю, как решить мою проблему.Так что я надеялся, что кто-нибудь здесь сможет помочь мне с моим, и я получу его лучше.

Проще говоря, я хочу, чтобы идентификатор, полученный из первого запроса, использовался для второго запроса.

Я новичок в JavaScript и NodeJS в целом.

function idRequest(name) {
    var options = {
        ...
    };
    
    function callback(error, response, body) {
        if (response.statusCode == 200 && !error) {
           const info = JSON.parse(body);
           //console.log(info.accountId);
           return info.accountId;   
       }    
    }
    request(options, callback);
}

function requestById(accountId) {

    var options = {
        ...
    };

    function callback(error, response, body) {
        if (response.statusCode == 200 && !error) {
            const info = JSON.parse(body);
            console.log(info);
        }   
      }
    
    request(options, callback);
}

var id = idRequest('..');
requestById(id);

Ответы [ 2 ]

0 голосов
/ 12 февраля 2019

, поскольку обратный вызов является асинхронным вызовом, поэтому var id будет undefined, когда вы вызываете requestById(id);

, так что вы можете использовать метод обещания, на который отвечает @brk, или вы можете вызватьВаша requestById(id) функция напрямую с первого обратного вызова.

0 голосов
/ 12 февраля 2019

Попробуйте, вернув обещание из первой функции, и внутри него разрешите обратный вызов, поэтому, как только он будет решен, вы можете использовать его для вызова второй функции

function idRequest(name) {
  var options = {
    ...
  };

  function callback(error, response, body) {
    if (response.statusCode == 200 && !error) {
      const info = JSON.parse(body);
      //console.log(info.accountId);
      return info.accountId;
    }
  }
  return new Promise(function(resolve, reject) {
    resolve(request(options, callback))

  })
}

function requestById(accountId) {

  var options = {
    ...
  };

  function callback(error, response, body) {
    if (response.statusCode == 200 && !error) {
      const info = JSON.parse(body);
      console.log(info);
    }
  }

  request(options, callback);
}

var id = idRequest('..').then(function(data) {
  requestById(data);
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...