この記事は、俺的RxSwiftまとめ①,俺的RxSwiftまとめ②の続きです。
#Observableとは何か?
observable
,observable sequence
,sequence
,stream
これらは全部同じ意味を持つ言葉で、イベントの流れである。(RxSwiftでは、sequence
ということが使われることが多い)
(引用)
Everything is a sequenceなのだ。
ここでいうイベントとは、数値や自身で定義したクラスのインスタンス、タップジェスチャーなどが含まれる。
このイベントは、以下のEnum
で定義されている。
public enum Event<Element> {
case next(Element)
case error(Error)
case completed
}
それぞれのcase
の場合どうなるか、Observable(sequence)
下記を表すマーブルダイアグラムとともに見ると、
next
の場合は、Observable
は次のイベントを放出する。また、error/completed
が呼ばれるまで、イベントを放出し続ける。
error
の場合はError
を放出し、observable
はイベントの放出をストップする。
completed
の場合は、observable
が停止し、イベントを放出をストップする。
##どうやってObservableを用いて処理をするか?
Observable
から放出されるイベントを使用するためには、subscribe
する必要がある。(Observable
はSubscribe
されるまで、イベントを放出したり、operator
での処理を行わない)
この際、イベントタイプごとに、handler
を追加することができる。
また、next
だったらElement
,error
だったらエラーインスタンスをhandler
に渡すことができる。
例
下図のマーブルダイアグラムに示されたObservableについて考える
let one = "1"
let two = "2"
let three = "3"
let observable = Observable.of(one, two, three)
observable.subscribe { event in
print(event)
}
next(1)
next(2)
next(3)
completed
subscribe
すると、イベントが順次扱えるようになる。
それをprint
すると、出力のようにnext
が3回流れ、最後にobservable
の停止を意味するcompleted
が流れてくる。