2016-10-02 279 views
0

我正在尋找一種方式,throttle()運算符在給定的時間間隔內放棄Observable中的第一個元素,而不是最後一個元素。RxSwift throttle()獲取第一個元素

RxSwift - Debounce/Throttle "inverse"中已經提出了類似的問題(並回答了),但是我想避免的答案中存在一些不完善之處。也就是說,在理想的情況下,獲得在Observable中發射的第一個元素,並且在時間間隔期間任何未來的元素都被忽略。但是,與window()timer()一起使用時,有可能兩個元素在的給定時間間隔內繼續,因爲定時器發生時不會平行於throttle()調用的開始。例如:

|..........|..........|..........| 
        ^^
       first second 

它們分爲不同的窗口,因此二者通過在鏈接的答案中描述的不完全的溶液接受。

理想情況下,將盡快在窗口的第一個元素進來重啓定時器的一種方式,所以,上面的例子反而會看起來像:

|..........|.......|..........| 
        ^^
       first second (ignored) 

任何想法?

編輯:很明顯,我不知道RxSwift 3.0-beta1的throttle()種類如何處理這個問題,但我正在尋找RxSwift 2.x實現的解決方案。

回答

2

事實證明,rxSwift 3.0處理throttle()的方式完全符合我的要求。它需要一個元素,然後在x秒內忽略任何其他元素(沒有我在問題中提到的'窗口問題')。

爲了完整起見:debounce()仍然符合rxSwift的'舊'節流定義。也就是說,它需要一個時間間隔中的最後一個項目。

相關問題