【问题标题】:How make one http-request per second in Node.js?如何在 Node.js 中每秒发出一个 http 请求?
【发布时间】:2023-03-20 01:47:02
【问题描述】:

那里。我有(例如)100 个链接,我需要为这些资源创建 100 个 http 请求(使用请求模块),但我有一个限制 - 每秒不超过一个请求。你能帮我用asyncrequest 模块组织这个吗?

更新

我提供了我的工作代码。

var async = require('async');
var request = require('request');
async.concat(links, function (link, callback) {
    request(link, function (error, response, body) {
        if (!error && response.statusCode == 200) {
            callback(null, body);
        }
    });
}, function () {
    console.log(results);
});

【问题讨论】:

  • setInterval 怎么样?

标签: javascript node.js asynchronous get httprequest


【解决方案1】:

是的,你可以使用每个系列的异步库

async.eachSeries(urlArray, function iterator(url, callback) {

     processurl( callback );

}, function done() {
  //...
});

【讨论】:

  • 嗨,我用了类似的例子。但是我怎样才能每秒最多发出一个请求呢?
  • 在这个例子中,一旦第一个请求完成,那么只会处理第二个请求。如果第一个请求需要 3 秒,那么第二个请求将在 3 秒后开始。
  • 但是如果我的第一个请求长不到一秒?
【解决方案2】:

您可以使用 underscore.js 中的节流函数来限制调用函数的速率。

underscore.js

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-17
    • 2018-07-12
    • 2021-04-03
    • 1970-01-01
    • 1970-01-01
    • 2015-08-04
    • 1970-01-01
    相关资源
    最近更新 更多