【发布时间】:2019-05-25 16:10:36
【问题描述】:
我有几个项目需要查询 3rd 方 API,并且说 API 的调用限制为每秒 5 次调用。我需要以某种方式将对 API 的调用限制为每秒最多 5 次调用。
到目前为止,我刚刚在一组承诺上使用了Promise.all(),其中每个承诺向 API 发送一个请求,并在 API 以 HTTP 状态代码 200 响应时解析,并在它以其他一些响应时拒绝状态码。但是,当数组中有超过 5 个项目时,我冒着 Promise.all() 拒绝的风险。
如何将Promise.all() 调用限制为每秒 5 次调用?
【问题讨论】:
-
也发布一些代码
-
Promise - 就像请求的影子。已经发送的请求。牢记这一点,当您已经获得承诺时,无法限制请求。尝试检查您用于请求的库 - 也许它已经具有限制请求的功能
-
你不能用
Promise.all做任何事情,因为在那个阶段所有的承诺都已经创建并且所有的任务都已经运行了。Promise.all不会“调用”任何东西,它会等待现有的东西。您首先需要在创建 Promise 的循环中限制 API 调用。
标签: javascript node.js promise es6-promise throttling