RxJava:如何从不同的地方完成观察?

时间:2016-07-08 07:03:06

标签: rx-java

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

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);
    }
}

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

1 个答案:

答案 0 :(得分:2)

虽然你应该知道PublishSubject既是Observable又是Observer,所以你应该这样做:

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

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