[英]Javascript: Rate limit but continue execution when limit is over
我在 Node.js 中有類似的東西,我正在使用限制器來限制該函數在一分鍾內可以執行的次數。 (例如每分鍾 10 次)
this.queue = [];
this.limiter = new RateLimiter(10, 60000);
someFunction() {
for(var element of this.queue) {
this.limiter.removeTokens(1, (err, remainingRequests) => {
//do something with element in queue and remove it from queue
});
}
}
現在我希望這個函數在添加到隊列后立即運行,如果它達到限制,它應該等到令牌重置,然后繼續執行隊列中的剩余項目。 請記住,項目可以一直添加到隊列中(例如,假設每秒鍾有 2 個項目一直添加到隊列中)。 實現這些結果的最佳方法是什么? 對於這個或任何可用的包,是否有更好的實現?
我能夠使用p-queue達到預期的結果
this.queue = new PQueue({
concurrency: 1,
autoStart: true,
intervalCap: 10,
interval: 60000
});
this.queue.add(() => {
this.someFunctuon();
});
someFunction() 添加到隊列后將立即開始執行。 隊列將每分鍾執行 10 個函數。 如果添加更多功能,它將等待 1 分鍾再繼續。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.