簡體   English   中英

Javascript:速率限制但在限制結束時繼續執行

[英]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 分鍾再繼續。

首先,您不應該在 for 循環內從queue刪除元素,在該循環中您正在迭代它的元素。

我希望此功能在添加到隊列后立即運行

要實現此類事情,您應該使用BehaviorSubject 之類的東西

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM