Wie kann ich den zeitgesteuerten Gegendruck in RxJS5 anwenden?

8

Stellen Sie sich vor, ich habe den folgenden Code:

%Vor%

Dies gibt sofort die Ergebnisse aus. Nun, wie stelle ich eine zeitgesteuerte Verzögerung zwischen jeder Nachricht als Art des Gegendrucks (beachten Sie, dass ich keinen Puffer will; stattdessen möchte ich a und b werden Kalte Observablen ), wie:

%Vor%

Und haben die exakt gleiche Antwort:

%Vor%

Alternative: Wenn Rückdruck (ou pull-Mechanismen für einige Observables) in RxJS nicht unterstützt wird, wie könnte man dann einen unendlichen Generator erzeugen, ohne die Ressourcen zu verlieren?

Alternative 2: Andere JS-Frameworks, die Pull- und Push-Mechanismen unterstützen?

    
Hugo Sereno Ferreira 29.01.2018, 03:23
quelle

2 Antworten

3

Im Fall von RxJS 5.x wird der Gegendruck nicht unterstützt, aber es gibt zum Beispiel pausable operator in Version 4.x. Es funktioniert nur mit heißen Observablen. Weitere Informationen zum Gegendruck im Falle von 4.x und hier (nimm vor allem eine Beute an der Unterseite und RxJS verwandte Beschreibung).

Dieser Tweet von Erik Meijer ist zwar umstritten, aber relevant: Ссылка

Für Ihre eigene Implementierung des Gegendruckmechanismus benötigen Sie einen 2-Wege-Kommunikationskanal, der relativ einfach mit 2 Fächern erstellt werden kann - eines für jedes Ende. Im Grunde verwenden Sie next zum Senden von Nachrichten und .subscribe zum Auflisten am anderen Ende.

Es ist auch möglich, einen Generator zu erstellen, der wiederum ein Subjekt verwendet, um zwischen Push- und Pull-basierten Welten zu überbrücken. Unten eine beispielhafte Implementierung zum Erzeugen von Fibonacci-Zahlen.

%Vor% %Vor%

Eine andere js-Bibliothek, die für dich von Interesse sein könnte, ist Ссылка - habe sie nicht benutzt, also nicht sicher, wie es geht befasst sich mit Gegendruck.

    
artur grzesiak 06.02.2018 19:32
quelle
0

Die Idee ist, die Zeit in die Warteschlange zu stellen, wenn die vorherige Ausführung beendet ist Fiddle

%Vor%     
CME64 07.02.2018 10:28
quelle