RxBinding:RxSearchView的一个rx序列中的不同debounced observable?

时间:2018-01-22 14:19:42

标签: android rx-java2 rx-android rx-binding

我使用RxBinding2来监听SearchView中的文本更改。当用户在EditText中输入smth时,我需要使用具有不同去抖动的单独逻辑。我试过这个:

    RxSearchView.queryTextChanges(searchView)
            .debounce(500, TimeUnit.MILLISECONDS) // use debounce 
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe(query -> mPresenter.searchRequest(query));
    RxSearchView.queryTextChanges(searchView) // no debounce required here
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe(query -> mPresenter.updateUI(query));

RxSearchView.queryTextChanges会覆盖侦听器,因此,当然只会调用第二个。

我可以将这两个不同的去抖动的 searchRequest updateUI 组合成一个rx序列吗? 我应该在某种程度上使用过滤器运算符吗?

1 个答案:

答案 0 :(得分:1)

您可以通过多种方式解决此问题,但我认为最便宜的方法是使用import React from 'react'; const Article = ({match, data}) => { let article = data.find(a => a.slug == match.params.articleSlug); let articleData; if(article) articleData = <div> <h3> {article.title.rendered}</h3> { console.log(`${article.title.rendered}`) } <p>{article.content.rendered}</p> { console.log(`${article.content.rendered}`) } <hr /> </div> else articleData = <h2> Sorry. That article doesn't exist. </h2>; return ( <div> <div> {articleData} </div> </div> ) } export default Article; 运算符。此运算符是.share()的简写。所以你可以这样做。

.publish().refCount()

希望这有帮助。