【发布时间】:2018-04-25 18:12:59
【问题描述】:
我需要向服务发送大量数据。每分钟允许我发送的项目有限制,每个请求我需要发送不超过 350 个项目,因此我将数据拆分为页面并尝试使用Observable 来限制请求:
const maxItemsPerRequest = 350;
const interval = Math.round(60 /*seconds*/ / maxPerMinute * 1000);
const pages = Math.ceil(totalItems / maxItemsPerRequest);
let observable = Observable.interval(interval).take(pages);
observable.subscribe(async page => {
const items = await getItems(page, maxItemsPerRequest);
await this.sendData(items);
});
getItems 和 sendData 可能需要一段时间才能完成,因此第二分钟可能会超出请求限制,例如(如果在第一分钟创建的请求需要超过 60 秒才能完成)。
如何确保订阅者在前一个请求完成后至少等待interval 毫秒,然后再发送新请求?
【问题讨论】:
标签: javascript node.js rxjs