单独函数中的HTTP请求[node.js / expressjs]

时间:2015-02-18 10:56:41

标签: javascript node.js asynchronous express

通过使用async模块,我有类似的东西,它完美无缺。 但是当我尝试重构代码或使其可重用时,它会在完成HTTP请求之前完成执行。 Nodejs以异步方式执行大量操作,因此找到解决方案对我来说有点困难。

我现在所拥有的。

  var async = require('async'),
  http = require('http');

  exports.unitedStates = function(req, res) {

    var texas = {
      //GET method data here / ex: host, path, headers....
    };

    var washington = {
      //GET method data here / ex: host, path, headers....
    };


    async.parallel({
        getSource: function(callback) {
          http.request(texas, function(respond) {
            //Http request
          }).end();
        },
        getScreen: function(callback) {
          http.request(washington, function(respond) {
            //Http request
          }).end();
        }
      },
      function(err, results) {
        //Return the results

        /* REPLY TO THE REQUEST */
        res.send( /* data here */ );
      });

}

是否有一种完美的方法可以将这段代码变为可重复使用

实施例

exports.unitedStates = function(req, res) {
  var tokyo = japan();

  //send the result to front end
  res.send(tokyo);
}

function japan(){
  //async calls comes here and return the value...
  return result;
}

1 个答案:

答案 0 :(得分:2)

不是从函数返回值,而是传递回调。

exports.unitedStates = function (req, res) {

   // pass callback here
   japan(function (value) {
       res.send(value);  
   });
} 

function japan(cb) {
   //async call here

   cb(result);
}