如何限制 api 请求堆栈?

2023-12-10

我有一个 id 数组,我想为每个 id 发出一个 api 请求,但我想控制每秒发出多少个请求,或者更好的是,任何时候只有 5 个打开的连接,并且当连接打开时完成,获取下一张。

目前我有这个,它只是同时触发所有请求:

_.each([1,2,3,4,5,6,7,8,9,10], function(issueId) {
    github.fetchIssue(repo.namespace, repo.id, issueId, filters)
        .then(function(response) {
            console.log('Writing: ' + issueId);
            writeIssueToDisk(fetchIssueCallback(response));
        });
});

就我个人而言,我会使用蓝鸟的.map()concurrency选项,因为我已经在使用 Promise 和 Bluebird 进行任何异步操作。但是,如果您想了解限制一次可以运行的并发请求数的手动编码计数器方案是什么样子,请参阅以下方案:

function limitEach(collection, max, fn, done) {
    var cntr = 0, index = 0, errFlag = false;

    function runMore() {
        while (!errFlag && cntr < max && index < collection.length) {
            ++cntr;
            fn(collection[index++], function(err, data) {
                --cntr;
                if (errFlag) return;
                if (err) {
                    errFlag = true;
                    done(err);
                } else {
                   runMore();
                }
            });
        }
        if (!errFlag && cntr === 0 && index === collection.length) {
            done();
        }
    }
    runMore();
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何限制 api 请求堆栈? 的相关文章

随机推荐

  • 如何使用 Qt oauth 创建登录页面?

    我一直在网上寻找如何在 Qt 桌面应用程序打开时创建身份验证页面 我已经构建了该应用程序 它非常小 仅由 main cpp 调用的 MainWindow 组成 现在我想在用户打开应用程序时添加一个身份验证页面 我创建了一个 Google A
  • 回发后将焦点设置在文本框上

    我有一个带有 3 个文本框的搜索页面 用户可以使用它们过滤搜索 我将焦点放在包含文本的文本框上 如果多个文本框包含文本 则只需关注最后一个文本框 private void SetFocusOnTextBox ControlCollectio
  • 无法在 gradle 同步上添加名称为“googleServices”的扩展程序

    我正在使用 ionic 并构建一个应用程序 该应用程序也使用 cordova plugin firebase 进行消息传递和分析插件 当我为 Android 构建这个应用程序时 我去了 android studio 进行测试 但 gradl
  • 将声音(wav)文件从目标c传递到javascript

    我正在 Objective C 中录制声音文件 wav 格式 我想使用 Objective C 将其传递回 JavascriptstringByEvaluatingJavaScriptFromString 我想我必须将 wav 文件转换为
  • 没有括号的字符串连接内的算术运算会导致奇怪的结果

    考虑以下代码行 其输出为 3 这是计算 x y 的预期结果 然而 预期输出是 10 7 3 因此 我的问题是 我与计算连接的字符串发生了什么 我知道为了产生我期望的结果 我需要将算术运算括在括号中 outputs 10 7 3 但由于 PH
  • Ada:在块语句中写入文件

    我正在处理一个数组 其长度在程序执行期间确定 所以我正在利用block我可以在其中设置数组限制的语句 我在将数组的元素写入文件时遇到问题因为我在写入过程中使用了存根 我删除了存根 使所有内容都在同一代码中 虽然现在我的代码编译并运行 它没有
  • 如何在 Xcode 4.2 中编辑项目设置?

    这听起来很愚蠢 但我想编辑我的项目设置并更改项目的 delevelper 配置文件 该项目在 xcode 3 2 中是项目 gt gt 编辑活动目标 编辑项目设置 但在 xcode 4 2 beta 版本上找不到这个 有谁知道怎么办 预先非
  • 使用 flutter 在 Listview 上未显示来自服务器 API 的数据

    我正在从服务器 API 获取数据 数据已成功从服务器获取 但问题是当数据提供给 Listview 时无法显示 如何在 flutter dart 中显示 Listview 上的数据 以下是从服务器 API 获取数据的代码 List
  • 获取我朋友的朋友列表

    我正在构建一个小型 Facebook 应用程序 在我的应用程序中 我试图获取我朋友的朋友列表 当我执行此操作时 我收到来自 Facebook 的错误 提示我无法选择非我的人的信息 我试图检索我朋友的朋友 这是我的意思的一个例子 用户 A 使
  • 是否可以加速背景/文本/边框格式?

    请参阅最后 AHMED AU 的回答 他的解决方案非常棒 在我的旧代码之后 我有了最新版本 速度的差异是惊人的 最初的问题 我正在将一系列 Excel 电子表格转换为深色主题 为此 我编写了一个简单的宏 见下文 用特定的 RGB 颜色替换当
  • Google Protocol Buffers:JavaScript 示例

    在 JavaScript 中使用 Google Protocol Buffers 是一个不错的选择还是使用 JSON 更好 如果有人能给我一个有关 JavaScript 中 Protocol Buffers 实现的简单示例 那就太好了 Go
  • C++ 将类方法作为参数传递给带有模板的类方法

    我正在尝试使用模板将一个类方法传递给另一个类方法 但找不到任何有关如何操作的答案 没有 C 11 boost ok 我将核心问题简化为 class Numerical Integrator public Generic Integrator
  • 从 JSON 对象动态创建嵌套列表 [重复]

    这个问题在这里已经有答案了 我想要实现的是 从 JSON 对象 多级 开始 如下所示 示例 geometry location lat 37 3860517 lng 122 0838511 viewport northeast lat 37
  • iOS AWS SDK 和 CloudFront - 访问图像

    抱歉 如果这听起来有点令人困惑 我正在尝试阅读 CloudFront 文档 但我有一个应用程序 它本质上是从 S3 下载一堆图像 我尝试设置一个新的 CloudFront 发行版 将源头指向我的 S3 存储桶 并想知道这将如何改变我在应用程
  • 使用 NetTopologySuite 将东距/北距转换为纬度/经度

    我有一堆东距 北距坐标 使用UTM大会据我所知 基本上 它们是笛卡尔坐标 我想将其转换为纬度和经度 想必网络拓扑套件可以帮助我解决这个问题 但我找不到太多相关文档 有人能给我一些指示来帮助我开始吗 编辑 东向和北向实际上是操作系统网格参考东
  • C++ 引用编译后会发生什么?

    编译后 引用会变成什么 地址还是常量指针 我知道指针和引用之间的区别 但我想知道底层实现之间的区别 int main int a 1 int b a int ptr a cout lt lt b lt lt lt lt ptr lt lt
  • 如何实现类似 Facebook Messenger/Google Hangouts 的布局以在 ANDROID 上的搜索栏中预览所选项目?

    Basically what I want to create can be best illustrated from a screenshot 我有一个人员列表视图 就像 FB Messenger 应用程序一样 我希望我的用户能够拥有像
  • 计算多列的值

    在Power Query中 第一个表如何转换为第二个表 在第二个表中 对每列的分类值进行计数 每列的值集仅限于 强烈同意 同意 中立 不同意 强烈不同意 Question A Question B Question C Strongly d
  • 如何返回 N1ql 查询结果作为 Couchbase 数据库的 REST API 的响应?

    我想退回N1qlQueryResult作为我的回应REST API 下面是代码 RequestMapping value test method RequestMethod GET public ResponseBody ResponseE
  • 如何限制 api 请求堆栈?

    我有一个 id 数组 我想为每个 id 发出一个 api 请求 但我想控制每秒发出多少个请求 或者更好的是 任何时候只有 5 个打开的连接 并且当连接打开时完成 获取下一张 目前我有这个 它只是同时触发所有请求 each 1 2 3 4 5