我是RxJava
的新人,所以我还有很多疑问。
我正在创造这个:
@Override
public Single<Result> saveUser(final User user) {
return Single.create(new Single.OnSubscribe<Result>() {
@Override
public void call(final SingleSubscriber<? super Result> singleSubscriber) {
if(user.isValid()){
save(user);
//Set result ok
singleSubscriber.onSuccess(result);
} else {
//This sets an error.
singleSubscriber.onError(error);
}
}
});
}
根据操作的成功,Single
会发出数据,订阅的人会收到数据。
现在的问题是,在某些时候我需要存储一个用户列表。类似的东西:
public void saveUsers(List<User> listOfUsers){
for (User user : listOfUsers) {
saveUser(user);
}
}
如何创建Single
以便我可以订阅最初的Single
答案 0 :(得分:2)
我宁愿用可观察列表创建平面图。
public void saveUsers(List<User> listOfUsers){
Observable.from(listOfUsers).flatMap((User user)->{
if(user.isValid()){
save(user);
//Set result ok
return Observable.just(result);
}else
return Observable.error(new RuntimeException("..."));
}).retry(2);
}
如果您阻止saveUsers
方法,请致电Observable#toBlocking
。