Wie kombiniere ich Throttling mit Subscription in knockoutjs?

8

Ich habe eine Funktion, die eine Kommunikation mit einem Server durchführt, um die aktuelle Bildschirmgeometrie usw. zu melden.

%Vor%

Ich abonniere diese Funktion für einige Ereignisse in meinem Code wie folgt:

%Vor%

Einige dieser Ereignisse werden möglicherweise zu häufig gesendet, um vom Server sinnvoll verarbeitet zu werden, und ich möchte die Anforderungen auf eine vernünftige Rate reduzieren.

Das Beste, was ich mir vorstellen konnte, war so etwas:

%Vor%

Gibt es eine prägnantere Methode, dieses Muster zu erfassen, oder ist das der richtige Weg?

    
Gene Golovchinsky 27.08.2012, 17:30
quelle

4 Antworten

10

Wenn Sie Underscore verwenden, können Sie % co_de verwenden % so:

%Vor%

Ansonsten ist es nicht wirklich ein Muster, das Knockout direkt unterstützt. Die Lösung, die Sie gefunden haben, scheint gut genug zu sein, obwohl hier eine Alternative ist:

%Vor%     
Michael Best 27.08.2012, 20:23
quelle
3

Angenommen, Ihr viewModel.onLayoutChange ist beobachtbar, können Sie einfach Folgendes tun:

%Vor%     
zvolkov 31.05.2013 20:53
quelle
0

Die obige Antwort ist ziemlich elegant! Ich habe eine Liste, die sortiert werden muss, die Reihenfolge und was dann auf dem Server als Benutzervorliebe gespeichert werden muss. Ich möchte den Server auf 3 verschiedene Eigenschaftenänderungen aktualisieren, aber nicht bei jeder Änderung. so etwas zu tun.

%Vor%

Erlaubt es mir, eine Reihe von Eigenschaften mit einer Funktion zu indizieren und dem Benutzer Zeit zu geben, vor dem Aktualisieren des Servers mit dem Klicken aufzuhören.

sehr nett, danke!

    
T00ks 20.02.2014 15:57
quelle
0

Sie brauchen nicht ein großes Code-Segment für eine ordentliche Drosselfunktion. Der Zweck einer Drosselungsfunktion ist es, die Browser-Ressourcen zu reduzieren, und nicht so viel Overhead zu verwenden, dass Sie noch mehr verwenden. Auch meine verschiedenen Anwendungen für Drosselfunktionen erfordern viele verschiedene Umstände für sie. Hier ist meine Liste von Dingen, die eine 'gute' Drosselfunktion benötigt, die diese hat.

  • Minimaler Aufwand.
  • Sofortiger Funktionsaufruf, wenn es seit dem letzten Aufruf mehr als Intervall MS gab.
  • Vermeiden der Ausführung der Funktion für ein anderes Intervall MS.
  • Verzögerung übermäßiger Ereignisauslösung, anstatt das Ereignis ganz zu löschen.
  • Aktualisiert das verzögerte Ereignis, wenn es notwendig ist, damit es nicht "altbacken" wird.
  • Verhindert die Standardaktion des Ereignisses, wenn die gedrosselte Funktion verzögert wird.
  • Sie können den Listener-Listener des Gas-Ereignisses entfernen.

Und ich glaube, dass die folgende Drosselfunktion all diese Anforderungen erfüllt.

%Vor%

Beispielverwendung:

%Vor%

Wenn Sie nur Ereignis-Listener hinzufügen und Ereignis-Listener nicht entfernen müssen, können Sie alternativ die folgende noch einfachere Version verwenden.

%Vor%

Standardmäßig drosselt dies die Funktion auf höchstens einen Anruf alle 200 ms. Um das Intervall auf eine andere Anzahl von Millisekunden zu ändern, ändern Sie einfach den Wert von minimumInterval .

    
lolzery wowzery 07.04.2018 02:06
quelle

Tags und Links