RxSwift 기본개념

donotinto·2024년 3월 31일

안녕하세요!! Donotinto입니다 :)
오늘은 RxSwift에 대해 대략적인 개념이라도 정리해보려고 합니다.

바로 시작해보겠습니다!


RxSwift란?

RxSwift는 Reactive Extension Swift의 약자로,

Observalbe 인터페이스를 통해서 표현된 계산(프로그래밍)의 일반적인 추상화로, 값과 이벤트들을 Observable(관측가능한) 흐름을 통해 송출하고 구독할 수 있게 해준다고 합니다...

첫 문장부터 어질어질한데,
지금은 Observable(관측 가능한)타입을 통해 비동기 처리를 도와주는 인터페이스...정도로 기억하면 될 것 같습니다.


Observable이란?

RxSwift에 있어 핵심적인 요소인 Observable은 말 그대로 관측 가능한 타입입니다.

위 그림처럼 Observable은 시퀀스를 생성하고 이벤트를 계속 방출합니다.

해당 Observable을 구독한 Observer는 이벤트가 방출되면, 이를 감지하여 UI를 변경한다든지 값을 변경한다든지 이벤트를 처리하게 됩니다.

Observable 생성

Observable은 Create 연산자로 생성되지만, 보통은 3가지 Type으로 생성합니다.

  • just
    하나의 요소만을 포함하고 한번만 방출하는 Observable 시퀀스
  • of
    여러 요소를 포함하고 해당 요소만큼 방출하는 Observable 시퀀스
    (배열도 하나의 요소로 취급)
  • from
    하나의 배열 요소만을 포함하고 배열의 각 요소를 방출하는 Observable 시퀀스
// Operator로 생성 후 이벤트 자체를 인자로 받는 모습
let justObservable = Observable<Int>.just(1)
let ofObservable = Observable<[Int]>.of([1,2,3], [2,3,4], [3,4,5])
let fromObservable = Observable<Int>.from([1,2,3])
        
justObservable.subscribe { event in
	print("just = \(event)")
}.disposed(by: disposeBag)
        
ofObservable.subscribe { event in
	print("of = \(event)")
}.disposed(by: disposeBag)
        
fromObservable.subscribe { event in
	print("from = \(event)")
}.disposed(by: disposeBag)

/*
just = next(1)
just = completed

of = next([1, 2, 3])
of = next([2, 3, 4])
of = next([3, 4, 5])
of = completed

from = next(1)
from = next(2)
from = next(3)
from = completed
*/

Observable 메소드

Observable은 다음 3가지 메소드를 통해 이벤트를 전달하거나 에러를 처리할 수 있습니다.

  • onNext
    이벤트(아이템)를 방출할 때 해당 메소드를 호출
    Observable로부터 방출된 이벤트(아이템)을 파라미터로 사용
  • onError
    이벤트(아이템)을 방출하는 과정에서 에러가 발생했을 때 해당 메소드를 호출
    Observable을 중단시키고 onNext나 onCompleted로 더 이상 호출하지 않음
  • onCompleted
    마지막으로 onNext를 호출한 후 해당 메소드를 호출

error와 completed는 시퀀스를 종료시키고, 더 이상 이벤트가 발생하지 않습니다!

제가 쓰면서도 뭔지 이해가 한번에 되지는 않아서 많이 써보고 체득을 해야 할 것 같은 느낌입니다...

다음편에서는 Subject에 대해서 이어서 작성해보도록 하겠습니다!

0개의 댓글