RxJava - 任何组合扫描和flatMap的方法?

Chr*_*ner 7 java rx-java rx-java2

假设我有一个带a String和a 的函数long并返回一个Single<String>.

Single<String> stringAddition(String someString, long value) {
  return Single.just(someString + Long.toString(value));
}
Run Code Online (Sandbox Code Playgroud)

现在我有这个Observable......

Observable.interval(1, SECONDS)
  .scan("", (cumulativeString, item) -> {
    // Need to return the result of stringAddition(cummulativeString, item)
  });
Run Code Online (Sandbox Code Playgroud)

我对如何做到这一点感到茫然.扫描需要我返回一个String,但是我想使用返回的方法Single<String>.对我来说,这似乎是我需要的东西,可以结合双方的行为scanflatMap.有没有可以帮助我的RxJava2魔法?

m.o*_*hov 5

您可以按如下方式实现。如果stringAddition可以返回,这可以稍微缩短Observable

Observable<String> scanned = Observable.interval(1, TimeUnit.SECONDS)
            .scan(
                    Observable.just(""),
                    (cumulativeString, item) ->
                        cumulativeString
                          .flatMap(str -> stringAddition(str, item).toObservable())
            )
            .flatMap(it -> it);
Run Code Online (Sandbox Code Playgroud)