请求模块使用

时间:2016-01-22 01:09:05

标签: node.js

我正在对网址执行“GET”请求以获取响应,因此我有一个处理请求的函数

var makeRequest = function(objs, callback){
    var url = 'adasda..';
    //...
    var result = null;
    request(url, function(error, response, body){
          if(!error && response.statusCode === 200){
                result = body;
                callback(null, body)
          }
    });

   return result;
}

在我的主要功能中,我正在调用上述功能

function main(values, callback){
  //...some logic
   var newValue={....}

   if(some conditional){
       newValue = makeRequest(values,callback); //newValue gets appended with new data
   }

   sendData(null, newValue, callback); //this function does a post 
}

var sendData = function(....){}

我注意到一旦 makeRequest 被执行,它会立即继续执行 sendData ,因为请求模块是异步操作。

我怎么能等到 newValue 对象被填充然后再调用sendData()?

1 个答案:

答案 0 :(得分:0)

等到回叫触发。我已经更新了您的代码。

var makeRequest = function(objs, callback) {
  var url = 'adasda..';

  request(url, function(error, response, body) {
    if (!error && response.statusCode === 200) {
      callback(null, body)
    }
  });
};

function main(values, callback) {

  var newValue = {}

  if (some conditional) {
    makeRequest(values, function(error, result) {
      // Call sendData once we get the data
      sendData(null, result, callback);
      callback(error, result);
    }); 
  }

}

var sendData = function() {};

为避免嵌套回调,您可以使用Promises