- Next
- Completed
- Error
Observable -> Observer로 이벤트를 생성해서 전달하는 2가지 방법을 코드로 구현해보자.
- create 연산자를 통해서 Observable의 동작을 직접 구현하는 방식
- from 연산자를 이용해서 미리 정의된 규칙에 따라 이벤트를 전달하는 방식
// #1 동작을 직접 구현한다.
Observable<Int>.create { (observer) -> Disposable in
observer.on(.next(0)) // 1
observer.onNext(1) // 2
observer.onCompleted() // 3
return Disposables.create() // 4
}
// #2 미리 정의된 규칙에 따라 이벤트를 전달한다.
Observable.from([0,1]) // 5
라인별로 동작
1 : on 메서드를 사용해 next이벤트에 0 데이터를 담아 observer에 전달
2 : onNext 메서드를 사용해 next이벤트에 0 데이터를 담아 observer에 전달
3 : observable의 lifeCicle종료 선언, 더 이상 이벤트를 받을 수 없음
4 : 메모리 정리에 필요한 객체이고, 다음에 하기로
5 : 이렇게 파라미터로 전달된 요소를 순서대로 방출하고 completed이벤트를 전달하는 observable을 생성한다.
- 단순히 순서대로 방출되는 observable을 생성할때에는 create로 직접 구현하는것보다는 from 같은 다른 연산자를 이용하는것이 간편하다.
- 현재까지는 observable이 생성된 상태, 아직 정수가 방출되거나 이벤트가 발생하지 않음
- 위의 두 옵져버블에서 이벤트가 실행되는 시점은 옵저버가 옵저버블을 구독하는 시점에 저게 실행된다고 생각하면 될듯
- 옵저버가 옵저버블을 구독하는 방법은 다음강의에서 !