在一个无休止的Observable上使用toList运算符

时间:2015-07-14 13:30:12

标签: java rx-java

当用户在ui上更改内容时,“无尽的”Observable会发出一个参数项。

取决于这个项目,我需要做一个请求。一旦参数项更改,应停止请求并启动新请求。

parameterObservable
    .switchMap(this::search) // to stop an restart the request with new params
    .toList()
    .subscribe(resultList -> {/* do something*/});

问题在于,toList运算符等待parameterObservable完成。哪个不会发生。

要使toList工作,我可以这样做:

parameterObservable
.subscribe(params -> search(params).toList()
    .subscribe(/* do something */)
);

但是缺少switchMap。

我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:2)

这个怎么样:

parameterObservable
    .switchMap(params -> search(params).toList())
    .subscribe(resultList -> {/* do something*/});