Springreactorで空のイベントを処理する方法

ロビン

まあ、これはリアクティブプログラミングとは直感に反しているように聞こえますが、null /例外を処理する方法を理解することはできません。

private static class Data {
    public Mono<String> first() {
        return Mono.just("first");
    }
    public Mono<String> second() {
        return Mono.just("second");
    }

    public Mono<String> empty() {
        return Mono.empty();
    }
}

基本的に、パブリッシャーがイベントを公開しない限り、サブスクライバーは行動しないことを理解しています。したがって、このようなコードは機能します。

Data data = new Data();
data.first()
    .subscribe(string -> Assertions.assertThat(string).isEqualTo("first"));

そして、最初の呼び出しが空を返した場合、私はこれを行うことができます。

Data data = new Data();
data.empty()
    .switchIfEmpty(data.second())
    .subscribe(string -> Assertions.assertThat(string).isEqualTo("second"));

しかし、両方の呼び出しが空を返す場合をどのように処理しますか(通常、これはユーザーに伝播する必要がある例外シナリオです)。

Data data = new Data();
data.empty()
    .switchIfEmpty(data.empty())
    .handle((string, sink) -> Objects.requireNonNull(string))
    .block();

上記の例では、イベントが公開されていないため、ハンドルは呼び出されません。

サイモン・バスル

JB Nizetが指摘したように、。を使用すると1秒switchIfEmptyチェーンできますMono.error

または、で問題がない場合はNoSuchElementException、チェーンでつなぐことができますsingle()それはちょうど1つの要素の強力な契約を強制し、そうでなければその標準的な例外を伝播します。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

editTextのimageSpanでonClickイベントを処理する方法は?

分類Dev

ReactJSのdivでonKeyDownイベントを処理する方法

分類Dev

ReactJSのdivでonKeyDownイベントを処理する方法

分類Dev

SwiftUIのGoogleマップでTapのイベントを処理する方法

分類Dev

Material Design Lightmdl-menuでイベントを処理する方法

分類Dev

divでクリックイベントを処理する方法

分類Dev

QTでC#COMイベントを処理する方法は?

分類Dev

SwiftUIでonChangeof Textイベントを処理する方法は?

分類Dev

C ++でキー押下イベントを処理する方法

分類Dev

ViewModelクラスでDataGridイベントを処理する方法

分類Dev

JavaMVCでイベントを処理する方法

分類Dev

C#でSlideShowBeginイベントを処理する方法

分類Dev

Webアプリでイベントを処理する方法は?

分類Dev

Windows C ++でイベントを処理する方法

分類Dev

RecyclerViewでクリックイベントを処理する方法

分類Dev

System.Drawingの形状でクリックイベントを処理する方法

分類Dev

3つのクラス内でイベントを処理する方法

分類Dev

RxJava:複数のスレッドでイベントを処理する方法

分類Dev

DDDWのbuttonclickedイベントを処理する方法は?

分類Dev

OnTouchListenerイベントとOnClickListenerイベントの両方を処理する方法

分類Dev

AngularでAccordionのopen / collapseイベントを処理する

分類Dev

ElectronアプリでSquirrelのイベントを処理する

分類Dev

WebAPIのOnApplicationErrorイベントで例外を処理する

分類Dev

境界半径などの空きスペースでのイベントの処理を回避する方法はありますか?

分類Dev

C#クライアントで複数のイベントを同時に処理する方法

分類Dev

この場合、AngularJSでイベントを処理するための最良の方法は何ですか?

分類Dev

element-ui VueJSのDialogコンポーネントでopenイベントを処理する方法は?

分類Dev

jQueryでボタンクリックイベントを処理する方法は?

分類Dev

FullCalendarイベント本体でリンクを処理する方法は?

Related 関連記事

  1. 1

    editTextのimageSpanでonClickイベントを処理する方法は?

  2. 2

    ReactJSのdivでonKeyDownイベントを処理する方法

  3. 3

    ReactJSのdivでonKeyDownイベントを処理する方法

  4. 4

    SwiftUIのGoogleマップでTapのイベントを処理する方法

  5. 5

    Material Design Lightmdl-menuでイベントを処理する方法

  6. 6

    divでクリックイベントを処理する方法

  7. 7

    QTでC#COMイベントを処理する方法は?

  8. 8

    SwiftUIでonChangeof Textイベントを処理する方法は?

  9. 9

    C ++でキー押下イベントを処理する方法

  10. 10

    ViewModelクラスでDataGridイベントを処理する方法

  11. 11

    JavaMVCでイベントを処理する方法

  12. 12

    C#でSlideShowBeginイベントを処理する方法

  13. 13

    Webアプリでイベントを処理する方法は?

  14. 14

    Windows C ++でイベントを処理する方法

  15. 15

    RecyclerViewでクリックイベントを処理する方法

  16. 16

    System.Drawingの形状でクリックイベントを処理する方法

  17. 17

    3つのクラス内でイベントを処理する方法

  18. 18

    RxJava:複数のスレッドでイベントを処理する方法

  19. 19

    DDDWのbuttonclickedイベントを処理する方法は?

  20. 20

    OnTouchListenerイベントとOnClickListenerイベントの両方を処理する方法

  21. 21

    AngularでAccordionのopen / collapseイベントを処理する

  22. 22

    ElectronアプリでSquirrelのイベントを処理する

  23. 23

    WebAPIのOnApplicationErrorイベントで例外を処理する

  24. 24

    境界半径などの空きスペースでのイベントの処理を回避する方法はありますか?

  25. 25

    C#クライアントで複数のイベントを同時に処理する方法

  26. 26

    この場合、AngularJSでイベントを処理するための最良の方法は何ですか?

  27. 27

    element-ui VueJSのDialogコンポーネントでopenイベントを処理する方法は?

  28. 28

    jQueryでボタンクリックイベントを処理する方法は?

  29. 29

    FullCalendarイベント本体でリンクを処理する方法は?

ホットタグ

アーカイブ