为什么使用toList()的debounce()在RxAndroid中不起作用?

时间:2017-04-28 16:18:43

标签: android rx-java rx-android

当我使用reflection时,从后端和数据中获取数据 我想转换为其他数据,最后使用debounce()。 当我使用toList()没有任何事情发生没有任何日志没有订阅和错误,没有toList()它工作,toList()方法输入尽可能多的我有书籍列表,我测试了第二代码的一部分没有subscribe()只有debounce()并使用getItems()就可以了。 以下是我的代码第一部分,toList()debounce()不起作用,第二部分itList()起作用

toList()

1 个答案:

答案 0 :(得分:11)

toList要求终止序列,而不会在响应文本事件的外部流上发生。您应该将书籍的处理移至switchMap

textChangeSubscriber
        .map(CharSequence::toString) // <-- text components emit mutable CharSequence
        .debounce(300, TimeUnit.MILLISECONDS)
        .observeOn(Schedulers.computation())
        .switchMap(s -> 
              getItems(s)
              .flatMapIterable(items -> items)
              .map(Book::convert)
              .toList()
              .toFlowable() // or toObservable(), depending on textChangeSubscriber
        )
        .observeOn(AndroidSchedulers.mainThread())
        .subscribe(books -> {
            Log.i("test", "" + books.toString());
        }, error -> {
            Log.i("test", "" + error);
        });