2017-05-03 68 views
1

假設單上可觀察到的onNext發出的RX-Java 1.2的

PublishSubject<Void> subject = PublishSubject.create(); 
Single<Integer> single = Single.just(0); 
single.subscribe(anySubscriber); 

我如何才能讓single發出值只調用subject.onNext(null)後?

這不是repeatWhen的情況 - 我不需要單獨重新訂閱。只是想延遲一段時間,然後手動觸發它。

我試圖

subject.flatMap(nothing -> single.toObservable()).toSingle().subscribe(anySubscriber); 

但在這種情況下anySubscriber不會被調用,因爲主體不完整。

有什麼建議嗎?

回答

2

總之 - 解決方案是delaySubscription()。 應採用類似以下內容:

PublishSubject<Void> subject = PublishSubject.create(); 
Single<Integer> single = Single.just(0); 
single.delaySubscription(subject).subscribe(anySubscriber); 

然後,在某個地方的代碼,準備發射單時,調用

subject.onNext(null);