2017-10-11 62 views
0

這個想法是,當我多次呼叫publishSubject.onNext(someValue)我只需要得到一個值,如debounce運算符,但它提供了最後一個值,我需要跳過所有值除了第一組之外,直到我停止呼叫onNext()持續1秒。 我試過使用類似throttleFirst(1000,TimeUnit.MILLISECONDS)的東西,但它不像debounce那樣工作,它只是在每次交付後使窗口和1秒後立即提供下一個值。RxJava 2運營商組合,只提供第一個值從一堆

+1

可以發佈您的示例代碼? –

回答

0

您可以使用第一個運算符。像:

Observable.first() 

這將只需要第一個值

1

試試這個:

// Observable<T> stream = ...; 
stream.window(stream.debounce(1, TimeUnit.Seconds)) 
     .flatMap(w -> w.take(1)); 

說明:如果我理解正確的話,你要發射的項目,如果沒有已發出持續1秒鐘。這相當於獲得第一個元素跟隨一個項目被消除1秒後的第一個元素。下面的大理石圖也可能有所幫助:

enter image description here