2017-01-28 9 views
1

Ich möchte in meinem abonnierenden Client benachrichtigt werden, wenn sich ein Wert in meiner Firebase-Datenbank für 3 Sekunden nicht geändert hat. Ich verwende RxJs & AngularFire in Typescript. Ich bin neu bei Rx im Allgemeinen und habe verschiedene Kombinationen von Timeout, Delay und Throttle ausprobiert. Es scheint, AngularFire Observable erbt nicht die volle RX Observable-Schnittstelle, sonst nehme ich an, ich sollte Intervall verwenden. Kann mir jemand in die richtige Richtung zeigen?AngularFire Observable, wenn die Änderung gestoppt wird

Antwort

3
Rx.Observable.merge(
    angularFireStream$, 
    angularFireStream$ 
    .switchMapTo(
     Rx.Observable.of("no change in last 3s").delay(3000) 
    ) 
) 

anschauliches Beispiel:

let angularFireStream$ = new Rx.Subject(); 
 
    
 
Rx.Observable.merge(
 
    angularFireStream$, 
 
    angularFireStream$ 
 
    .switchMapTo(
 
    Rx.Observable.of("no change in last 3s").delay(3000) 
 
) 
 
) 
 
.subscribe(console.log); 
 

 

 
angularFireStream$.next(1); 
 
setTimeout(() => angularFireStream$.next(2), 2000) 
 
setTimeout(() => angularFireStream$.next(3), 3000)
<script src="https://unpkg.com/rxjs/bundles/Rx.min.js"></script>

+0

Thank you! Die Kombination mit switchMapTo() hat es geschafft! – Henrik

Verwandte Themen