【发布时间】:2020-08-19 12:15:30
【问题描述】:
我正在 nodeJS、express 和 mysql 中构建一个应用程序,在其中我使用 node fetch 从几个不同的 API 收集数据,其中一个限制为每 5 分钟 200 次调用。 为了完全更新我的数据库,我基本上需要不间断地运行对这个 API 的调用, 目前我正试图通过在 for 循环/foreach 中使用睡眠来保持在限制范围内。
问题是每个请求都可能随时间变化,看起来我可以使调用更有效,而不是为每个请求不断休眠相同的时间。我想知道是否有更好的方法来做到这一点?我一直在考虑让例如 199 个调用异步,然后正好等待 5 分钟,然后重复它..但我不知道如何。
找不到关于此的主题,但如果已经有好的答案,请做一个链接。 非常感谢您的回答,如果您有其他反馈,请告诉我!
for (let i = 1; i < length; i++) {
try {
let id = IdCollection[i];
let resultFromApiCall = await datafetcher.MakeApiCall(id);
await sleep(2000);
} catch (error) {
console.log("Error in api-calls" + error);
}
}```
【问题讨论】:
-
我认为最佳解决方案取决于您在此处获取的内容。我不知道每个
fetch之间是否需要延迟,因为我不知道你在获取什么。 -
如果你绝对需要发出这么多请求,也许你应该研究一下 WebSockets (html5rocks.com/en/tutorials/eventsource/basics)
标签: javascript node.js api asynchronous fetch