LoginSignup
3
4

More than 3 years have passed since last update.

俺的RxSwiftまとめ③(Observableとは何か? )

Last updated at Posted at 2020-10-25

この記事は、俺的RxSwiftまとめ①,俺的RxSwiftまとめ②の続きです。

Observableとは何か?

observable,observable sequence,sequence,streamこれらは全部同じ意味を持つ言葉で、イベントの流れである。(RxSwiftでは、sequenceということが使われることが多い)

image.png
(引用)

Everything is a sequenceなのだ。

ここでいうイベントとは、数値や自身で定義したクラスのインスタンス、タップジェスチャーなどが含まれる。

このイベントは、以下のEnumで定義されている。

Event.swift
public enum Event<Element> {
    case next(Element)
    case error(Error)
    case completed
}

それぞれのcaseの場合どうなるか、Observable(sequence) 下記を表すマーブルダイアグラムとともに見ると、
image.png
nextの場合は、Observableは次のイベントを放出する。また、error/completedが呼ばれるまで、イベントを放出し続ける。

image.png
errorの場合はErrorを放出し、observableはイベントの放出をストップする。

image.png
completedの場合は、observableが停止し、イベントを放出をストップする。

どうやってObservableを用いて処理をするか?

Observableから放出されるイベントを使用するためには、subscribeする必要がある。(ObservableSubscribeされるまで、イベントを放出したり、operatorでの処理を行わない)
この際、イベントタイプごとに、handlerを追加することができる。
また、nextだったらElement,errorだったらエラーインスタンスをhandlerに渡すことができる。

下図のマーブルダイアグラムに示されたObservableについて考える

image.png

Example.swift
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が流れてくる。

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