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:
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?
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.
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.
Tags und Links javascript rxjs rxjs5 observable reactivex