在永无止境的 Observable 上使用 toList 运算符

using toList operator on a neverending Observable

一旦用户在 ui 上更改某些内容,"neverending" 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。

我怎样才能做到这一点?

这个怎么样:

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