宣布搜索输入值,我希望switchMap()
使用返回Flowable<List<T>>
的方法我使用@Maxim Ostrovidov建议编辑我的代码,现在使用debounce
我添加了3行,如想要通过列表转换为其他时间和接收列表,但不起作用。在其他情况下,我使用了这3行,但不适用于debounce
和switchMap
.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(/../);
答案 0 :(得分:2)
由于没有Observable.switchMapFlowable
运算符yet,您必须使用toObservable
或toFlowable
手动转换流(取决于您计划获得的流类型)最终):
// 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))
...