简体   繁体   English

RxJava和“ Single”列表可观察

[英]RxJava and list of `Single` observable

I'm new in RxJava so I still have many doubts. 我是RxJava所以我仍然有很多疑问。

I'm creating this: 我正在创建这个:

    @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);
            }
        }
    });
}

Depending of the success of the operation, the Single emits it's data and who is subscribed receives the data. 根据操作的成功程度, Single会发出其数据,被订阅的人会接收该数据。

The problem now is that at some point I need to store a list of users. 现在的问题是,在某个时候我需要存储用户列表。 Something like: 就像是:

public void saveUsers(List<User> listOfUsers){
    for (User user : listOfUsers) {
        saveUser(user);
    }
}

How can I create an Single so I can be subscribed to the initial Single 我如何创建一个Single以便可以订阅初始的Single

I would rather create flatmap out of observable list. 我宁愿从可见列表中创建平面图。

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);
}

If you make your saveUsers method blocking, call Observable#toBlocking . 如果您使saveUsers方法saveUsers阻塞状态,请调用Observable#toBlocking

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM