LoginSignup
1
1

More than 5 years have passed since last update.

Observableでつまづいた

Last updated at Posted at 2015-05-20

Observableを使用していた際につまづいたことで得た知見もどき。

遭遇した事案の擬似コード

CompositSubscription subscriptions = new CompositSubscription();

...

Observable<Integer> numberObservavle = Client().getNumber()
                                      .map(Response::Entity)
                                      .toBlocking()
                                      .single();

subscriptions.add(AppObservable.bindActivity(this,
                            numberObservable.map(/*以下略*/)
                            ).subscribe()); 

かなりてきとーだけど、上記のようなコードを実行しようとすると、subscription.add()の部分でnumberObservableの処理が終わらないままになってしまう。

このコードだと、numberObservableObservable numberObservavle = ... の部分ではnumberOnservableはあくまで処理待ちの状態になっただけで、実際はsubscriptions.add(bindActivity())で実行される。

これを解消するにはnumberObservableの.toBlocking().single()をなくすと
subscriptions.add(bindActivity())で期待通り実行される。

なので、下記みたいに書き直せばOK。

(省略)

Observable<Integer> numberObservavle = Client().getNumber()
                                      .map(Response::Entity);

subscriptions.add(AppObservable.bindActivity(this,
                            numberObservable.map(/*以下略*/)
                            ).subscribe()); 

擬似コードという言い訳を使って、割りと適当に書いてるけどそのあたりはスルーしてください。

SB69早く観ないと・・・。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1