2015-02-04 10 views
20

Będąc nowym dla RxJS, często tworzę temat, który zachowuje wartości w przyszłości, ale początkowo jest to undefined. Za pierwszym razem może być tylko undefined. Obecnie używam filter, aby pomijać wartości undefined, ale jest to dość uciążliwe, ponieważ robię to wszędzie, gdzie potrzebuję tylko raz. (Może zrobię coś nie tak tutaj?) Czy mogę jakoś subskrybować mySubject dopiero po uzyskaniu pierwszej wartości przez onNext?RxJS: Jak nie subskrybować wartości początkowej i/lub niezdefiniowanej?

var mySubject = new Rx.BehaviorSubject(undefined); 

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

Istnieje również metoda pomijania można zadzwonić na obserwowalne pominąć dowolną liczbę czołowych pozycji w sekwencja. – Will

+0

@Will - czy możesz uświadomić mi, jak używać przeskoczyć z Subskrypcją na BehaviorSubject? –

Odpowiedz

25

Zastosowanie new Rx.ReplaySubject(1) zamiast BehaviorSubject.

+1

Jeszcze raz dziękuję. Trzeci raz...? Ja * do * czytam dokumenty RxJS i kilka poradników, ale czasami trudno jest znaleźć rozwiązanie dla określonego problemu. – Pipo

+0

Tak, to jest dużo do zapamiętania – Brandon

+0

@Brandon czy możesz mi powiedzieć, jak mogę zainicjować wartość? I nie potrzebuję wartości początkowej –

8

Jak wspomniano przez Will powinieneś być w stanie po prostu pominąć pierwszą wartość za pomocą operatora Przeskoczyć:

var mySubject = new Rx.BehaviorSubject(undefined); 

mySubject.skip(1).subscribe(function(value) { 
    // do something with the value 
}); 
Powiązane problemy