RxSwift - Observable & Observer

Jenny·2022년 4월 7일
1
//MARK: of - 가번적인(변경 될수 있는, 변경 할수 있는)Element가 포함하는 Observable Sequence를 생성
//MARK: of - Element가 많다고 해서 Array 타입이 아니다 설정 값은 <Int>타입이며 확인을 해보면 Observable<Int>로 되어 있다. 가변 적으로 Element들을 넣을수 있다는 것이다.
let observableOfInt: Observable<Int> = Observable<Int>.of(1,2,3,4,5)
let observableOfString: Observable<String> = Observable<String>.of("1","2","3","4")

print(observableOfInt)
print(observableOfString)

//MARK: Observable & Observer
//MARK: Observable는 관찰 가능한 상태를 유지하며 Event를 방출한다. 해당 Event는 Observer(관찰자)에게 전달하며,  Observer가 이벤트를 전달받으면 이를 Observer가 처리합니다.
//MARK: 이러한 행위를 Subscribe(구독) 한다고 표현하기에 Observer를 구독자라고 부른다.
//MARK: Observable이 방출 하는 이벤트를 Observer가 받아내서 처리하기 위해서는 구독(Subscribe)행위가 필요하다고 앞서 언급 하였으며, 구독을 하기 위해서는 Subscribe 메서드를 호출 하여야 합니다.


//MARK: create 연산자
//MARK: create 연산자는 Observable의 Event(옵저버블)를 직접 생성 한다. 생성한 Event를 처리하기 위해서는 구독(Subscribe)메서드를 호출 하여야 한다. Create메서드는 단순히 Observer에게 전달한 Event를 직접 생성 하는것이다.


let randomObservable: Observable<Int> = Observable<Int>.create { element in
    element.onNext(1)
    return Disposables.create()
}

randomObservable.subscribe (onNext: { (element) in
    print("observer 1 : \(element)")
})

Observables 개념이란

- Observables Observable 클래스는 Rx코드 기반으로 T(제너릭)형태의 데이터를 전달 할 수 있는 이벤트 들을 비동기적으로 생성하는 기능입니다. 간단하게 말해서 다른 클래스에서 emit(방출)하는 값을 구독할수 있게 해준다는 의미 이다.
  • Observable는 ObservableType 프로토콜을 준수한다 또한 ObsrvableType 프로토콜은 ObservableConvertibleType 프로토콜을 준수합니다.

    • next - 최신/다음 데이터를 전달한다
    • completed - 성공적으로 일련의 이벤트들을 종료시키는 이벤트 즉, Observable(생성자)가 성공적으로 자신의 생명주기를 완료했으므로, 추가적으로 이벤트를 방출 하지 않는다.
    • error - Observable(생성자)가 에러가 났으니 이벤트를 방출 하지 않는다. 추가적으로 이벤트를 생성하지 않을 것임을 의미(에러와 함께 완전 종료)
  • Observable는 next, error, completed 구성요소를 가지고 있다.

let observableWithInt: Observable<Int> = Observable<Int>.just(1)
let observableWithString: Observable<String> = Observable<String>.just("2")

print(observableWithInt)
print(observableWithString)

Observable 생성

  • just - 오직 하나의 Element를 포함하는 Observable Sequence를 생성
let observableWithInt: Observable<Int> = Observable<Int>.just(1)
let observableWithString: Observable<String> = Observable<String>.just("2")

print(observableWithInt)
print(observableWithString)
  • of - 가번적인(변경 될수 있는, 변경 할수 있는)Element가 포함하는 Observable Sequence를 생성
  • of - Element가 많다고 해서 Array 타입이 아니다 설정 값은 타입이며 확인을 해보면 Observable로 되어 있다. 가변 적으로 Element들을 넣을수 있다는 것이다.
let observableOfInt: Observable<Int> = Observable<Int>.of(1,2,3,4,5)
let observableOfString: Observable<String> = Observable<String>.of("1","2","3","4")

print(observableOfInt)
print(observableOfString)

Observable & Observer

  • Observable는 관찰 가능한 상태를 유지하며 Event를 방출한다. 해당 Event는 Observer(관찰자)에게 전달하며, Observer가 이벤트를 전달받으면 이를 Observer가 처리합니다.
  • 이러한 행위를 Subscribe(구독) 한다고 표현하기에 Observer를 구독자라고 부른다.
  • Observable이 방출 하는 이벤트를 Observer가 받아내서 처리하기 위해서는 구독(Subscribe)행위가 필요하다고 앞서 언급 하였으며, 구독을 하기 위해서는 Subscribe 메서드를 호출 하여야 합니다.

profile
"Jenny 있게 iOS 개발을 하며 성장해 나아가자"

0개의 댓글