如何避免在RxJava中返回lambda的输入参数?

时间:2018-03-16 09:21:16

标签: reactive-programming rx-java2

如何替换以下代码?

return Observable.just(player1, player2)
                     .doOnNext(player -> player.status = // mutate status)
                     .flatMap(player -> {
                                 playersDao
                                         .savePlayerCompletable(player)
                                         .andThen(Single.just(player));
                             }
                     )
            ;

我不太喜欢如何将player传递到flatMap内的lambda中,然后我将其返回Single.just。我该怎么走?我的想法是,我必须在Observable中返回更新的玩家(具有不同的状态)。我并不想让saveReport返回Single

编辑:我确实希望返回Flowable<Player>(因此我不想在RxChain中丢失它们)。

1 个答案:

答案 0 :(得分:-1)

使用flatmap完成。

 Throwable throwable = Flowable.fromIterable(players)
                   .doOnNext(request -> request.status == //mutate states)
                                          .flatMapCompletable(savePlayerCompletable::save)
                                              .blockingGet();
    if (throwable != null) {
     ///something went wrong
    }

return Flowable.fromIterable(players)
                   .doOnNext(request -> request.status == //mutate states)
.flatMapCompletable(savePlayerCompletable::save);