按顺序发出请求 Node.js顺序、Node、js

由网友(不悲不喜)分享简介:如果我需要按顺序调用 3 个 http API,下面的代码有什么更好的替代方法:If I need to call 3 http API in sequential order, what would be a better alternative to the following code:http.get({...

如果我需要按顺序调用 3 个 http API,下面的代码有什么更好的替代方法:

If I need to call 3 http API in sequential order, what would be a better alternative to the following code:

http.get({ host: 'www.example.com', path: '/api_1.php' }, function(res) { 
  res.on('data', function(d) { 

    http.get({ host: 'www.example.com', path: '/api_2.php' }, function(res) { 
      res.on('data', function(d) { 

        http.get({ host: 'www.example.com', path: '/api_3.php' }, function(res) { 
          res.on('data', function(d) { 


          });
        });
        }
      });
    });
    }
  });
});
}

推荐答案

使用延迟,如 Futures.

Using deferreds like Futures.

var sequence = Futures.sequence();

sequence
  .then(function(next) {
     http.get({}, next);
  })
  .then(function(next, res) {
     res.on("data", next);
  })
  .then(function(next, d) {
     http.get({}, next);
  })
  .then(function(next, res) {
    ...
  })

如果你需要传递作用域,那么就做这样的事情

If you need to pass scope along then just do something like this

  .then(function(next, d) {
    http.get({}, function(res) {
      next(res, d);
    });
  })
  .then(function(next, res, d) { })
    ...
  })
阅读全文

相关推荐

最新文章