我RxSearchView
用来将搜索查询的结果从 API 发送到 recyclerview。但是,如果其中一个查询失败,onError()
则会调用(这是预期的),但整个订阅也会被取消。根本不执行后续查询。
我应该如何修改代码,以便在onError()
查询失败并且下一个传入查询正常执行时阻止调用?
这是一个代码片段:
subscription = RxSearchView.queryTextChanges(searchView)
.debounce(500, MILLISECONDS)
.filter(charSequence -> !TextUtils.isEmpty(charSequence))
.map(CharSequence::toString)
.subscribeOn(AndroidSchedulers.mainThread())
.observeOn(Schedulers.io())
.switchMap(query -> apiService.getSearchResults(query))
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Subscriber<SearchResponse>() {
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
}
@Override
public void onNext(SearchResponse searchResponse) {
if (searchResponse.getStatus().equals("OK")) {
//update Adapter
} else {
//update error views
}
}
});
switchMap()
PS:如果新查询的结果已经到达,我正在使用旧查询的结果被忽略。