我有一个用例,我必须验证RXJava Observable只发出1个项目(不多也不少),我知道这是一个异步世界,Observable应该定义一个超时时间以关闭流到那时我们就可以实现可观察到的0或1或更多的发射项目,我遇到的问题与性能和超时值有关,因为它可能会影响我的客户服务。这是我当前的代码,我想对其进行改进以避免在新代码中阻塞语句:
import rx.Observable;
...
Observable<Items> oItems = service.getItems(requestParams);
List resultData = new ArrayList();
oItems .toBlocking().subscribe((arg) -> {
resultData.add(arg.getId());
}
if (resultData.size() == 1) {
return Observable.just(resultData.get(0));
}
return Observable.empty();
感谢您的爱意和想法。
答案 0 :(得分:0)
使用.scan()
,它将是:
Observable<Boolean> isOneItemObservable = oItems
.scan(0, (amount, o) -> amount + 1)
.map( amount -> amount == 1)