本文介绍了按顺序发出请求 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({ 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) { })
    ...
  })

这篇关于按顺序发出请求 Node.js的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-24 07:54