LoginSignup
2
3

More than 5 years have passed since last update.

RxSwiftのsubscribeOn、observeOnの意味を整理する

Posted at

なにこれ

subscribeOn, observeOnについて、以前ややこしいなあと思った記憶があるのでかんたんに整理しておきます。

subscribeOnについて

なぜObservable(Cold)の実行スレッドはsubscribeOnで設定するのか

ColdなObservableはsubscribeして初めてObservableのイベントを発火します。
つまりColdなObservableにおいては、購読≒イベント実行といえます。
よって、subscribeOnは、Observableのイベント実行スレッドを決定するという意味になります。

なぜHotのObservableは実行スレッドを変更できないのか

HotなObservableでは、購読の有無にかかわらずObservableがイベントを発行します。
購読前にすでにイベントの実行を行っているため、subscribeOnではObservableの実行スレッドを変更することは出来ません。

observeOnについて

なぜsubscribe内の実行スレッドはobserveOnで設定するのか

一方で、observeOnは、「Observerが」どこでイベントを観測するかという意味になります。

ObserverとObservableの意味をごちゃごちゃにしないことがポイントかと思います。
Observableはイベントを発行するもので、Observerは発行されたイベントを副作用として処理するものです。すなわち、雑な言い方をすると、Observerはsubscribe内で、イベントを観測し、UIの変更などを行う部分になります。

よって、observeOnsubscribe内のObserver実行スレッドを決定すると考えることが出来ます。

2
3
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
2
3