【问题标题】:RxJava: how to complete observable from a different place?RxJava:如何从不同的地方完成 observable?
【发布时间】:2016-07-08 15:23:39
【问题描述】:

如何在 RxJava 中创建一个从不同位置完成的对象(未来),但我想将一个可观察对象返回给某个客户端?

class DeferredAction {
    private final CompletableFuture<String> future;
    private final Observable<String> observable;
    public DeferredAction() {
        future = new CompletableFuture<>();
        observable = Observable.from(future);
    }

    public Observable<String> observe() {
        return observable;
    }

    public void complete(Stirng value) {
        future.complete(value);
    }
}

这是正确的方法吗? 第二个问题:我如何在那个 observable 上获得多个订阅者?目前我看到只有一个订阅者在工作。

【问题讨论】:

    标签: rx-java


    【解决方案1】:

    这应该可以工作,尽管您应该知道 PublishSubject 既是 Observable 又是 Observer,因此您可以这样做:

    PublishSubject<String> subject = PublishSubject.create();
    subject.take(10).subscribe(sub1);  
    subject.last().subscribe(sub2);
    subject.onNext("boo");
    subject.onCompleted();
    

    如您所见,此模式还支持多个订阅者。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-10-28
      • 2018-06-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多