RxJava创建项目列表的可观察链条
问题描述:
如何返回一个observable,它将在对List中的所有项目执行webservice调用后发出多个项目?RxJava创建项目列表的可观察链条
所以我有一个web服务,它可以保存例如一辆“汽车”。我从UI中检索“汽车”列表,我想单独保存所有这些,但我只想订阅1个Observable。所以我基本上希望根据从UI接收到的“汽车”数量创建一些多个Observable链,并且我希望单个Observable发出的webservie的每个结果。一旦所有的“汽车”都保存在web服务中,单一的Observable可能会onComplete。
答
我想你只需要使用Observable.form,如果你需要creare创建每辆车的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
}
答
我使用改造用于调用Web服务与RxJava这样的:
请求:
Observable<ResponsePOJO> getCars(Param param);
呼叫getCars和处理响应:
client.getCars(param)
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(Response -> {
// Success
}, e -> {
// Error
});
答
我可能是误解,但是,这不仅仅是一个你可以从列表中平面映射到个人的情况al物品?
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);
}
});
}
这样,onNext(车车)将被调用多次,每当整个列表的处理,onCompleted()被调用。在这个例子中,我使用网络作为我的列表的源,但我想这也可以是UI。
我希望这是你在找什么,否则,请详细说明,我会跟你一起想;)
我实际上需要对UI中的一个列表中的一定数量的汽车发布Post请求 –