2015-02-04 9 views
20

Essendo nuovo per RxJS Spesso creo un argomento che contiene valori in futuro, ma è inizialmente undefined. Può essere solo undefined la prima volta. Attualmente utilizzo un filter per ignorare i valori undefined, ma questo è piuttosto ingombrante come lo faccio io ovunque come ho bisogno solo una volta. (Forse faccio qualcosa di sbagliato qui?) Posso iscrivermi in qualche modo a mySubject solo dopo aver ottenuto il suo primo valore tramite onNext?RxJS: Come non iscriversi al valore iniziale e/o indefinito?

var mySubject = new Rx.BehaviorSubject(undefined); 

mySubject.filter(function(value) { 
    return value !== undefined; 
}).subscribe(function(value) { 
    // do something with the value 
}); 
+1

C'è anche un metodo di salto è possibile chiamare il osservabile per saltare qualsiasi numero di importanti elementi nella sequenza. – Will

+0

@Will - puoi chiarirmi su come usare skip con Subscription to BehaviorSubject? –

risposta

25

Uso new Rx.ReplaySubject(1) invece di BehaviorSubject.

+1

Grazie ancora. Per la terza volta...? I * do * legge i documenti RxJS e diverse guide, ma a volte è davvero difficile trovare una soluzione per un determinato problema. – Pipo

+0

Sì, è molto da memorizzare – Brandon

+0

@Brandon puoi dirmi che come posso inizializzare il valore? E non ho bisogno del valore iniziale –

8

Come già detto da Will si dovrebbe essere in grado di saltare solo il primo valore utilizzando l'operatore di salto:

var mySubject = new Rx.BehaviorSubject(undefined); 

mySubject.skip(1).subscribe(function(value) { 
    // do something with the value 
}); 
Problemi correlati