2016-07-08 32 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(); 

正如你所看到的,這種模式還支持多用戶。

相關問題