2016-07-08 25 views
2

如何在RxJava中创建一个从不同地方完成的对象(未来),但我想将某个可观察对象返回给某个客户端?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); 
    } 
} 

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

回答

2

这应该工作,虽然你应该知道的PublishSubject这既是可观察到的和观察,所以你可以这样做:

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

正如你所看到的,这种模式还支持多用户。

相关问题