Get the latest value of an Observable and emit it immeditely

前端 未结 3 1011
渐次进展
渐次进展 2021-02-12 09:13

I\'m trying to get the latest value of a given Observable and get it to emit immediately once it\'s called. Given the code below as an example:

ret         


        
3条回答
  •  清酒与你
    2021-02-12 09:54

    last() method will not be of any help here as it waits for the Observable to terminate to give you the last item emitted.

    Assuming that you do not have the control over the emitting observable you could simply create a BehaviorSubject and subscribe it to the observable that emits the data that you want to listen and then subscribe to the created subject. Since Subject is both Observable and Subscriber you will get what you want.

    I think (do not have the time to check it now) you may have to manually unsubscribe from the original observable as the BehaviorSubject once all of his subscribers unsubscribe will not unsubscribe automatically.

    Something like this:

    BehaviorSubject subject = new BehaviorSubject();
    hotObservable.subscribe(subject);
    subject.subscribe(thing -> {
        // Here just after subscribing 
        // you will receive the last emitted item, if there was any.
        // You can also always supply the first item to the behavior subject
    });
    

    http://reactivex.io/RxJava/javadoc/rx/subjects/BehaviorSubject.html

提交回复
热议问题