Ich lerne RxJs und es ist ziemlich cool. Ich versuche eine Seite zu erstellen, auf der der Ajax-Aufruf ein Intervall ist, so dass die Daten alle 5 Sekunden aktualisiert werden. Also dachte ich, ich würde das machen.Wie kombiniere ich Intervall-Stream mit Promise-Stream in RxJs und bekomme die Werte?
var ajax = new Promise(function(resolve) {
return resolve('test');
});
var source1 = Rx.Observable.interval(5000)
.map(function(i) {
return Rx.Observable.fromPromise(ajax);
});
source1.subscribe(function(res) {
res.subscribe(function(pro) {
console.log(pro);
})
});
jedoch die Tatsache, dass ich tun muss zwei subscribe
s hat mir denken, dass ich vielleicht falsch hier etwas tun. Ich bin mir nicht sicher, ob ich in die richtige Richtung gehe?
Was ich will, ist ein Strom von Versprechen, die alle 5 Sekunden abgerufen werden.
Hier ist meine jsfiddle
https://jsfiddle.net/noppanit/2y179dgg/
, wenn Sie wollen Speichern Sie Ihre Bestellung von Versprechungen, die Sie 'concatMap' anstelle von' fl verwenden können atMap' Aber mehr besser für Versprechungen, 'flatMapLatest' zu verwenden – xgrommx
Wenn Sie 'test' durch eine zufällige Zeichenfolge wie Math.random() ersetzen. toString (36) .substr (2, 5), können Sie sehen, dass die Ausgabevariable doesn ändere nicht. Gibt es eine Möglichkeit, Promise zu zwingen, in jedem Intervall ausgeführt zu werden? – khamaileon
Versprechen werden nur einmal gelöst, also ja das ist das erwartete Verhalten. Wenn Sie in jedem Intervall ein anderes Versprechen haben wollen, dann machen Sie genau das. 'var source1 = Rx.Observable.interval (1000) .flatMap (Funktion (i) { Rückgabe makeYourPromiseHere (i); });' – user3743222