RxJava和`Single`可观察列表

时间:2016-06-03 10:16:50

标签: java rx-java reactive-programming

我是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

1 个答案:

答案 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