2017-01-24 23 views
0

Kennt jemand eine benutzerdefinierte Implementierung von BehaviorSubject, die den letzten Wert verwirft, sobald ein Abonnent es verbraucht hat?BehaviorSubject, das den letzten Wert nach der Ausgabe löscht

Warum eine solche Implementierung wäre eine schlechte Idee?

+0

Warum verwenden Sie BehaviorSubject? Verwenden Sie stattdessen PublishSubject. –

+0

Weil ich möchte, dass der Wert bleibt, bis es einen Abonnenten gibt. –

+0

Was ist mit mehreren gleichzeitigen Abonnenten, möchten Sie alle von ihnen den gleichen Wert erhalten, wenn es ankommt? Kann ein einzelner Abonnent viele Werte konsumieren oder wird er sofort abbestellt, nachdem er ein Objekt erhalten hat? –

Antwort

0

ich rund um das Thema gehackt auf diese Weise:

<T> Observable<T> discardOnceDelivered(BehaviorSubject<T> subject) { 
    return subject.filter(t -> t!=null).doOnNext(inputFields -> subject.onNext(null)); 
} 

Die einzige Einschränkung (in Rx 1.x) ist, dass null Werte werden nicht als gültig emittierten Werte akzeptiert, sondern verwendet, um die Wirkung des Verwerfens zu codieren der letzte Wert

Verwandte Themen