2
我有一個Observable
,永遠不會完成。它發出一個List<Item>
。每當它發出該列表時,我需要過濾掉其中的一些項目。目前我有這個作爲解決方案:RxJava 2:如何過濾發出「列表<Item>」的無限流的項目?
mData.getItemsObservable() // Observable<List<Item>>
.compose(...)
.flatMapSingle(items -> Observable.fromIterable(items)
.filter(item -> item.someCondition())
.toList())
.subscribe(items -> {
// ...
}, error -> {
// ...
});
這是篩選出一些項目的最佳方式?有沒有更簡單(更可讀)的方法來做同樣的事情?
我已經試過這太,但它並沒有發出任何東西:如果你要堅持RxJava
mData.getItemsObservable() // Observable<List<Item>>
.compose(...)
.flatMap(Observable::fromIterable) // or like this: flatMapIterable(items -> items)
.filter(item -> item.someCondition())
.toList()
.subscribe(items -> {
// ...
}, error -> {
// ...
});
除了使用IxJava,第一種方式是一個。第二個將不會完成,因爲你展開每個列表項目,並有一個無限的; toList需要像第一種情況下的flatMapSingle中那些有限的那些。 – akarnokd
@akarnokd感謝您的解釋。因此,如果我理解正確,第一種方法是過濾出項目的方式?它看起來不如第二種方法好。有什麼可以改進的嗎?謝謝 –