Throttle JavaScript-Funktionsaufrufe, aber mit Warteschlangen (keine Aufrufe verwerfen)

9

Wie kann eine Funktion ihre Anrufe begrenzen? Die Anrufe sollten nicht verworfen werden, wenn sie zu häufig sind, sondern in der Zeit und in einem Abstand von X Millisekunden angeordnet werden. Ich habe throttle und entprellen , aber sie verwerfen Aufrufe, anstatt sie in der Zukunft anzulegen.

Eine bessere Lösung als eine Warteschlange mit einer process() -Methode in einem Intervall von X Millisekunden? Gibt es solche Standardimplementierungen in JS-Frameworks? Ich habe bis jetzt underscore.js angeschaut - nichts.

    
Dan Dascalescu 15.04.2014, 00:49
quelle

3 Antworten

1

Während die von anderen angebotenen Snippets funktionieren (ich habe eine Bibliothek basierend auf diesen erstellt), für diejenigen, die Möchten Sie gut unterstützte Module verwenden, hier sind die besten Möglichkeiten:

  • Der beliebteste Ratenbegrenzer ist Begrenzer
  • function-rate-limit hat eine einfache API, die funktioniert, und gute Nutzungsstatistiken für npmjs
  • vetaillet , ein neueres Modul, behauptet, dass es durch die Unterstützung von Versprechen noch besser funktioniert, aber noch nicht an Popularität gewonnen hat
Dan Dascalescu 15.08.2016, 20:15
quelle
4

Hier ist ein Beispiel, das this weitergibt (oder Sie können einen benutzerdefinierten festlegen)

%Vor%

Jetzt

%Vor%     
Paul S. 15.04.2014 01:33
quelle
3

Sollte ohne eine Bibliothek ziemlich einfach sein:

%Vor%

Ссылка

    
Petah 15.04.2014 01:14
quelle