android - 如何将 RxTextView switchMap 与 Flowable 数据一起使用?

标签 android rx-java observable rx-android rx-java2

对搜索输入值进行去抖动处理,我想使用switchMap() with 方法返回 Flowable<List<T>>我已经使用 @Maxim Ostrovidov 建议编辑了我的代码,现在使用 debounce我添加了 3 行,因为想要将列表转换为其他时间并接收列​​表,但不起作用。我在其他情况下使用了这 3 行,它可以工作,但不适用于 debounceswitchMap

.flatMapIterable(items -> items)
        .map(Product::fromApi)
        .toList()




  subscription = RxTextView.textChangeEvents(searchInput)
            .toFlowable(BackpressureStrategy.BUFFER)
            .debounce(400, TimeUnit.MILLISECONDS)
            .observeOn(Schedulers.computation())
            .switchMap(event -> getItems(searchInput.getText().toString()))
            .flatMapIterable(items -> items)
            .map(Product::fromApi)
            .toList()
            .subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread())
         .subscribe(/../);

最佳答案

因为没有 Observable.switchMapFlowable 运算符 yet ,您必须使用 toObservabletoFlowable 手动转换流(取决于您最终计划获得的流类型):

// Observable stream
RxTextView.textChangeEvents(searchInput)
    .debounce(300, TimeUnit.MICROSECONDS)
    .switchMap(event -> yourFlowable(event).toObservable())
    ...

// Flowable stream
RxTextView.textChangeEvents(searchInput)
    .toFlowable(BackpressureStrategy.BUFFER) //or any other strategy
    .debounce(300, TimeUnit.MICROSECONDS)
    .switchMap(event -> yourFlowable(event))
    ...

关于android - 如何将 RxTextView switchMap 与 Flowable 数据一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43334099/

相关文章:

android - Spring Boot 上的 Controller 415 不支持的媒体类型

android - 使用 RxJava 处理长时间运行的任务

rxjs - RxJS 中的 throttleTime 与 debounceTime 之间有什么区别以及何时选择哪个?

html - 如何使用 html 中的异步管道获取可观察值的嵌套值

android - 支持库中 Fragment 的 getContext 和 getActivity 有什么不同?

android - 为什么 Maven 仓库中缺少 facebook-android-sdk 4.5.1?

JavaRx on ErrorReturn 返回不同的类型

android - RxJava Observable.create 包装可观察订阅

observable - RxJava 2 : Stats about messages dropped because of BackPressure?

安卓浏览器插件