RxSwift - Observable & Observer

11861 단어 rxswiftrxswift
//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 메서드를 호출 하여야 합니다.

좋은 웹페이지 즐겨찾기