簡體   English   中英

RxJava2:映射器函數內部是否允許鏈接?

[英]RxJava2: Is chaining allowed inside mapper function?

在下面的函數f returns Single<String>的代碼f returns Single<String>

   Observable.map { line ->
              f(line).doOnError { e ->
                    println("Error:$e")
                }
        }
        .subscribe({ record -> println(record) }, { e -> println("Error2:$e") })

映射內的println("Error:$e")不會執行,但是我可以在訂戶中打印錯誤。 看起來不允許映射器函數內部的鏈接。 這是正確的嗎? 如果是,為什么?

編輯:也嘗試過平面圖,但結果相同。

   Observable.flatmap { line ->
              f(line).toObservable().doOnError { e ->
                    println("Error:$e")
                }
        }
        .subscribe({ record -> println(record) }, { e -> println("Error2:$e") })

這按預期工作:

@Test
public void test() {
    Observable.just(1)
    .flatMap(v -> single(v)
            .toObservable()
            .doOnError(w -> System.out.println("Error2 " + w))
    )
    .subscribe(v -> System.out.println(v), e -> System.out.println("Error " + e));
}

Single<Integer> single(Integer v) {
    return Single.error(new IOException());
}

打印:

Error2 java.io.IOException
Error java.io.IOException

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM