在永无止境的 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*/});
一旦用户在 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*/});