__________     __ __     __  _______    ________
  / ____/ __ \   / // /    / / / /  _/ |  / / ____/
 / / __/ / / /  / // /_   / /_/ // / | | / / __/
/ /_/ / /_/ /  /__  __/  / __  // /  | |/ / /___
\____/\____/     /_/    /_/ /_/___/  |___/_____/

 --- A GOPHER-LIKE INTERFACE FOR HIVE BLOCKCHAIN ---

【Programming】RxJava リアクティブプログラミング vol.4 / RxJavaの構成~後編~

BY: @promari | CREATED: April 5, 2019, 9:44 p.m. | VOTES: 264 | PAYOUT: $14.64 | [ VOTE ]

[IMAGE: https://cdn.steemitimages.com/DQmfCQZTcVKXhN4fByhZqnKudpkJtK4SxwEHGqWfZbKm9Ni/o1AJ9qDyyJNSpZWhUgGYc3MngFqoAMxopALi6Zh4C8ck3F7cr.png]

前回はRxJavaの構成についてまとめました(記事はこちら)。今回も引き続きRxJavaの構成をまとめてみます。

1.4.8 subscribe メソッド/ subscribeWith メソッド

1.4.8.1 subscribeメソッド
戻り値の型 メソッド 説明 Disposable subscribe() Flowable/Observableの処理だけ行いSubscriber/Observerは何もしない Disposable subscribe(Consumer onNext) データの通知(onNext)を受け取った時の処理のみ引数で定 義してあるように行う Disposable subscribe( Consumer onNext, Consumer onError) データの通知(onNext)とエラーの通知(onError)を受け取った時の処理のみ引数で定義してあるように行う Disposable subscribe( Consumer onNext, Consumer onError, Action onComplete) データの通知(onNext)とエラーの通知(onError)と完了の通知(onComplete)を受け取った時の処理のみ引数で定義してあるように行う Disposable subscribe( Consumer onNext, Consumer onError, Action onComplete, Consumer onSubscribe) データの通知(onNext)とエラーの通知(onError)と完了の通知(onComplete)を受け取った時の処理を引数で定義してあるように行い、さらに購読開始時の処理(onSubscribe)も定義してあるように行う

※subscribeメソッドでは、デフォルトでリクエストするデータ数にはLong.MAX_VALUEが設定されている。
※エラー時の処理を指定していない場合は、エラーの通知を受けてもスタックトレースを出力するだけでそれ以外は処理しない。

// 購読を開始する。
Disposable disposable = flowable.subscribe(data -> System.out.println("data=" + data));
// 購読を解除する
disposable.dispose();
1.4.8.2 subscribeWidthメソッド
public final > E subscribeWith(E subscriber) {
    subscribe(subscriber);
    return subscriber;
}
Disposable disposable = flowable.subscribeWith(new ResourceSubscriber(){
  // 中略
});

1.4.8.3 observeOn メソッド

1.4.9 CompositeDisposable

public static void main(String[] args) throws Exception {
    // Disposableをまとめる
    CompositeDisposable compositeDisposable = new CompositeDisposable();
    compositeDisposable.add(Flowable.range(1, 3)
        .doOnCancel(() -> System.out.println("No.1 canceled"))
        .observeOn(Schedulers.computation())
        .subscribe(data -> {
            Thread.sleep(100L);
            System.out.println("No.1: " + data);
        }));

    compositeDisposable.add(Flowable.range(1, 3)
        .doOnCancel(() -> System.out.println("No.2 canceled"))
        .observeOn(Schedulers.computation())
        .subscribe(data -> {
            Thread.sleep(100L);
            System.out.println("No.2: " + data);
        }));

    // しばらく待つ
    Thread.sleep(150L);
    // まとめて購読の解除を行う
    compositeDisposable.

1.4.10 Single/Maybe/Completable

クラス 説明 Single データを1件だけ通知するか、もしくはエラーを通知するクラス Maybe データを1件だけ通知するか、1件も通知せず完了を通知するか、もしくはエラーを通知するクラス Completable データを1件も通知せず完了を通知するか、もしくはエラーを通知するクラス 生産者 消費者 Single SingleObserver Maybe MaybeObserver Completable CompletableObserver
1.4.10.1 Single
メソッド 説明 onSubscribe(Disposable disposable) 通知の準備ができたら呼ばれるメソッド。引数に購読の解除を行えるDisposableを受け取る onSuccess(T data) データを受け取り処理を行うメソッド。これ以降のデータの通知はないので、onSuccessメソッドが呼ばれることはSingleの処理が完了したことを意味する onError(Throwable error) 通知処理を行っている間にエラーが発生したら呼ばれるメソッド。 引数に発生したエラーのオブジェクトが渡される
public static void main(String[] args) {
    // Singleの作成
    Single single = Single.create(emitter ->
        emitter.onSuccess(LocalDate.now().getDayOfWeek());
    });
    // 購読する
    single.subscribe(new SingleObserver() {

        // 購読の準備ができた際の処理を行う
        @Override
        public void onSubscribe(Disposable disposable) {
            // 何もしない
        }

        // データの通知を受け取った際の処理を行う
        @Override
        public void onSuccess(DayOfWeek value) {
            System.out.println(value);
        }

        // エラーの通知を受け取った際の処理を行う
        @Override
        public void onError(Throwable e) {
            System.out.println("エラー=" + e);
        }
    });
}
1.4.10.2 Maybe
メソッド 説明 onSubscribe(Disposable disposable) 通知の準備ができたら呼ばれるメソッド。引数に購読の解除を行えるDisposableを受け取る onSuccess(T data) データを受け取り処理を行うメソッド。これ以降のデータの通知はないので、onSuccessメソッドが呼ばれることは、Maybeの処理が完了したことを意味し、onCompleteは呼ばれない onComplete データを通知することなく、Maybeの処理が完了した際に実行されるメソッド onError(Throwable error) 通知処理を行っている間にエラーが発生したら呼ばれるメソッド。 引数に発生したエラーのオブジェクトが渡される
public static void main(String[] args) {
    // Maybeの作成
    Maybe maybe = Maybe.create(emitter -> {
        emitter.onSuccess(LocalDate.now().getDayOfWeek());
    });

    // 購読する
    maybe.subscribe(new MaybeObserver() {
    // 購読の準備ができた際の処理を行う
    @Override
    public void onSubscribe(Disposable disposable) {
        // 何もしない
    }

    // データの通知を受け取った際の処理を行う
    @Override
    public void onSuccess(DayOfWeek value) {
        System.out.println(value);
    }

    // 完了の通知を受け取った際の処理を行う
    @Override
    public void onComplete() {
        System.out.println("完了");
    }

    // エラーの通知を受け取った際の処理を行う
    @Override
    public void onError(Throwable e) {
        System.out.println("エラー=" + e);
    }
});
1.4.10.3 Completable
メソッド 説明 onSubscribe(Disposable disposable) 通知の準備ができたら呼ばれるメソッド。引数に購読の解除を行えるDisposableを受け取る onComplete Completableの処理が完了した際に実行されるメソッド onError(Throwable error) 通知処理を行っている間にエラーが発生したら呼ばれるメソッド。引数に発生したエラーのオブジェクトが渡される
public static void main(String[] args) throws Exception {

    // Completableの作成
    Completable completable = Completable.create(emitter ->

        // …略 何らかの処理を行う

       // 完了を通知する
       emitter.onComplete();
    });

    completable
        // Completableを非同期で行う
        .subscribeOn(Schedulers.computation())
        // 購読する
        .subscribe(new CompletableObserver() { // ❸

        // 購読の準備ができた際の処理を行う
        @Override
        public void onSubscribe(Disposable disposable) {
            // 何もしない
        }

        // 完了の通知を受け取った際の処理を行う
        @Override
        public void onComplete() {
            System.out.println("完了");
        }

        // エラーの通知を受け取った際の処理を行う
        @Override
        public void onError(Throwable e) {
            System.out.println("エラー=" + e);
        }
    });

    // しばらく待つ
    Thread.sleep(100L);
}

1.4.11 RxJava の拡張モジュール

[IMAGE: https://img.esteem.ws/t0r78hqbeu.png]
written by tamito0201

プログラミングとのご縁結びならプロマリへ。

オンラインプログラミング学習スクールのプロマリは、プログラミングの初学者の皆様を応援しています。プログラミング講師と一緒に面白いアプリを作りませんか。

[IMAGE: https://img.esteem.ws/btpb5hmlur.png]

The programming school "Promari" will help you learn programming. "Promari" is supporting the first scholars of programming. Let's develop an application with our programming instructor.

TAGS: [ #promari ] [ #programming ] [ #japanese ] [ #blog ] [ #java ]

Replies

NO REPLIES FOUND.

[ BACK TO TRENDING ] [ BACK TO MENU ]
CMD>