NodeJS请求从函数返回JSON

时间:2019-02-12 09:24:01

标签: javascript node.js callback request

我在这里已读过几篇有关此问题的文章(回调),但我仍然不太了解如何解决我的问题。所以我希望这里有人可以帮助我,我会做得更好。

简单地说,我希望将从第一个请求中获得的ID用于第二个请求。

我是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 :(得分:0)

尝试从第一个函数返回一个promise,并在其内部解决回调,因此一旦解决,便可以使用它来触发第二个函数

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);
});

答案 1 :(得分:0)

因为回调是异步调用,所以当您调用 override fun onFling( e1: MotionEvent?, e2: MotionEvent?, velocityX: Float, velocityY: Float ): Boolean { ... 时,var id将是undefined

因此您可以使用由@brk回答的promise方法,也可以直接从第一个回调调用requestById(id);函数。