rx java - 如何从过滤的可观察对象中获取类似 BehaviorSubject-Behavior



我有一个可观察量,我已经对其应用了一个过滤器。 我想从中获取类似 BehaviorSubject 的语义,以便在订阅时,订阅者会收到最后一个通过过滤器的项目。 然而,BehaviorSubject似乎并没有被设计成被困在链的中间,而只是作为一个来源。

有没有办法做到这一点?

您可以使用

compose来链接它们,例如:

public class BehaviorSubjectTransformer<T> implements Observable.Transformer<T, T> {
    @Override
    public Observable<T> call(Observable<T> o) {
        BehaviorSubject<T> subject = BehaviorSubject.create();
        o.subscribe(subject);
        return subject;
    }
    public static <T> Observable.Transformer<T, T> create() {
        return new BehaviorSubjectTransformer<T>();
    }
}
@Test
public void foo() {
    Observable<Integer> o = Observable.just(1, 2, 3).concatWith(Observable.never()).compose(BehaviorSubjectTransformer.create());
    o.subscribe(new Action1<Integer>() {
        @Override
        public void call(Integer v) {
            System.out.println("1: " + v);
        }
    });
    o.subscribe(new Action1<Integer>() {
        @Override
        public void call(Integer v) {
            System.out.println("2: " + v);
        }
    });
}

相关内容

  • 没有找到相关文章

最新更新