iOS/학습정리

iOS) RxSwift 가볍게 훑어보기 (3) just, of, from

yeonduing 2021. 1. 30. 14:53

Observable 생성 연산자

just

하나의 항목을 방출하는 Observable 생성

ObservableType 프로토콜의 Type Method이다.
just로 생성한 Observable은 파라미터로 전달한 요소를 그대로 방출한다.

let disposeBag = DisposeBag()
let element = "🌝"

Observable.just(element)
    .subscribe { event in print(event) }
    .disposed(by: disposeBag)

Observable.just([1, 2, 3])
    .subscribe { event in print(event) }
    .disposed(by: disposeBag)

위 코드를 실행하면 다음과 같이 나온다.

next(🌝)
completed
next([1, 2, 3])
completed

배열로 들어간 값들이 각각 전달되는게 아니고 한 번에 전달되는 것을 알 수 있다.

of

두 개 이상의 요소를 방출하는 Observable을 만들기 위해서 사용한다.

파라미터가 가변 파라미터로 선언되어 있어 여러 개의 값을 동시에 전달할 수 있다. of 연산자 역시 ObservableType 프로토콜의 Type Method이다.

let disposeBag = DisposeBag()
let apple = "🍎"
let orange = "🍊"
let kiwi = "🥝"

Observable.of(apple, orange, kiwi)
    .subscribe { element in print(element) }
    .disposed(by: disposeBag)
next(🍎)
next(🍊)
next(🥝)
completed

그렇다면 배열은 어떻게 처리될까?

Observable.of([1, 2], [3, 4], [5, 6])
    .subscribe { element in print(element) }
    .disposed(by: disposeBag)
next([1, 2])
next([3, 4])
next([5, 6])
completed

배열은 just처럼 그대로 인식하여 통으로 출력된다.

from

전달된 배열이 각각 처리되도록 하기 위해 사용한다.

let disposeBag = DisposeBag()
let fruits = ["🍎", "🍊", "🥝", "🍒", "🍇"]

Observable.from(fruits)
    .subscribe { element in print(element) }
    .disposed(by: disposeBag)
next(🍎)
next(🍊)
next(🥝)
next(🍒)
next(🍇)
completed

정리

just 하나의 요소를 방출해야 할 때 사용

of 두 개 이상의 요소를 방출해야 할 때 사용

from 배열에 저장된 요소를 순서대로 하나씩 방출해야 할 때 사용

참고