RxJava为项目列表创建可观察链
在对列表中的所有项执行webservice调用后,如何返回将发出多个项的observableRxJava为项目列表创建可观察链,java,android,rx-java,reactive-programming,Java,Android,Rx Java,Reactive Programming,在对列表中的所有项执行webservice调用后,如何返回将发出多个项的observable 因此,我有一个Web服务,它可以保存一辆“汽车”。我从UI中检索一个“汽车”列表,我想单独保存所有这些,但我只想订阅一个可观察的。因此,我基本上希望根据从UI接收到的“汽车”数量,创建某种形式的多个可观察对象链,并且我希望由单个可观察对象发出的Web服务的每个结果。一旦所有的“汽车”都保存在web服务中,单个可观察的可能就完成了。我正在使用RxJava对web服务进行改造,如下所示: 请求: Obser
因此,我有一个Web服务,它可以保存一辆“汽车”。我从UI中检索一个“汽车”列表,我想单独保存所有这些,但我只想订阅一个可观察的。因此,我基本上希望根据从UI接收到的“汽车”数量,创建某种形式的多个可观察对象链,并且我希望由单个可观察对象发出的Web服务的每个结果。一旦所有的“汽车”都保存在web服务中,单个可观察的可能就完成了。我正在使用RxJava对web服务进行改造,如下所示: 请求:
Observable<ResponsePOJO> getCars(Param param);
client.getCars(param)
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(Response -> {
// Success
}, e -> {
// Error
});
我正在使用RxJava调用web服务,如下所示: 请求:
Observable<ResponsePOJO> getCars(Param param);
client.getCars(param)
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(Response -> {
// Success
}, e -> {
// Error
});
我可能有点误解,但这不只是一个从列表到单个项目的平面映射吗
public Observable<Car> getCars() {
return api.getCars()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.flatMap(new Func1<List<Car>, Observable<Car>>() {
@Override public Observable<Car> call(List<Car> carlist) {
return Observable.from(carlist);
}
});
}
公共可观测的getCars(){
返回api.getCars()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.flatMap(新函数1(){
@覆盖公共可观察呼叫(列表carlist){
从(carlist)可观察到的回报;
}
});
}
这样,onNext(Car-Car)将被多次调用,并且每当处理整个列表时,都会调用onCompleted()。在本例中,我使用网络作为列表的源,但我认为这也可以是UI
我希望这就是你想要的,否则,请详细说明,我会和你一起考虑;) 我可能有点误解,但这不正是一个你可以从列表平面映射到单个项目的情况吗
public Observable<Car> getCars() {
return api.getCars()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.flatMap(new Func1<List<Car>, Observable<Car>>() {
@Override public Observable<Car> call(List<Car> carlist) {
return Observable.from(carlist);
}
});
}
公共可观测的getCars(){
返回api.getCars()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.flatMap(新函数1(){
@覆盖公共可观察呼叫(列表carlist){
从(carlist)可观察到的回报;
}
});
}
这样,onNext(Car-Car)将被多次调用,并且每当处理整个列表时,都会调用onCompleted()。在本例中,我使用网络作为列表的源,但我认为这也可以是UI
我希望这就是你想要的,否则,请详细说明,我会和你一起考虑;) 我认为您只需要使用Observable.from,如果您需要创建每辆车的Observable,只需使用flatMap操作符即可。 完成后,只需订阅即可
@Test
public void flatMapCars() {
Observable.from(getCars())
.flatMap(this::saveCar)
.subscribe();
}
private List<String> getCars() {
return Arrays.asList("Aston martin", "Renault", "Seat");
}
private Observable<String> saveCar(String car) {
return Observable.just(car);//You should save the car
}
@测试
公共车辆{
可观察。从(getCars())
.flatMap(此::saveCar)
.subscribe();
}
私家车名单{
返回数组。asList(“阿斯顿马丁”、“雷诺”、“座椅”);
}
私人可观察储蓄车(串车){
返回可见。只是(车);//你应该救这辆车
}
我认为您只需要使用Observable.from,如果您需要创建每辆车的Observable,只需使用flatMap操作符即可。
完成后,只需订阅即可
@Test
public void flatMapCars() {
Observable.from(getCars())
.flatMap(this::saveCar)
.subscribe();
}
private List<String> getCars() {
return Arrays.asList("Aston martin", "Renault", "Seat");
}
private Observable<String> saveCar(String car) {
return Observable.just(car);//You should save the car
}
@测试
公共车辆{
可观察。从(getCars())
.flatMap(此::saveCar)
.subscribe();
}
私家车名单{
返回数组。asList(“阿斯顿马丁”、“雷诺”、“座椅”);
}
私人可观察储蓄车(串车){
返回可见。只是(车);//你应该救这辆车
}
我实际上需要从用户界面对列表中的一定数量的汽车发出Post请求。我实际上需要从用户界面对列表中的一定数量的汽车发出Post请求