如何在Nodejs中对http get请求进行排队以控制其速率?

use*_*956 9 node.js

我有一个NodeJS应用程序,它从代码中的不同位置发送HTTP get请求,有些甚至是依赖的(发送请求,等待回复,处理它并基于发送另一个请求的结果).我需要限制请求的速率(例如,每小时10个请求).

我考虑将请求排队,然后在某个中心点以受控方式释放它们,但却陷入了如何对回调函数及其相关参数进行排队的问题.

很高兴听到建议如何以最小的重组为应用程序来应对这种情况.

谢谢

top*_*pek 7

我想你已经回答了你的问题.可以限制请求的中央队列是可行的方法.这里唯一的问题是队列必须具有请求的完整信息和应该使用的回调.我会在一个QueueableRequest看起来像这样的对象中抽象它:

var QueueableRequest = function(url, params, httpMethod, success, failure){
  this.url = url;
  this.params = params;
  ...

}
//Then you can queue your request with

queue.add(new QueueableRequest({
  "api.test.com",
  {"test": 1},
  "GET",
  function(data){ console.log('success');},
  function(err){ console.log('error');}
}));
Run Code Online (Sandbox Code Playgroud)

当然这只是示例代码,可能更漂亮,但我希望你能得到它.