본문 바로가기

ReactiveX11

[RxSwift] Operator 결정 트리 1. 생성 나는 새로운 Observable을 생성하고 싶은데 그 Observable이 특정 항목을 생성해야 한다면: Just 구독 시점에 호출된 Action, Callable, Runnable 또는 그와 유사한 함수 등을 통해 생성된 항목을 리턴해야 한다면: From 지정된 시간 이후에 항목을 배출해야 한다면: Timer 특정 Array, Iterable 또는 유사한 형태의 소스로부터 항목들을 배출해야 한다면: From 퓨처에서 연속된 항목을 가져와야 한다면: From 반복적으로 연속된 항목을 배출해야 한다면: Repeat 사용자가 정의한 로직을 통해 생성되어야 한다면: Create 각각의 옵저버가 Observable을 구독한 후에 생성되어야 한다면: Defer 연속된 정수를 배출해야 한다면: Range.. 2021. 12. 14.
[Rxswift] Operators - To 1. To To — Observable을 다른 객체나 자료 구조로 변환한다 구현부 public func toArray() -> Single { PrimitiveSequence(raw: ToArray(source: self.asObservable())) } 예시 Observable.of("A", "B", "C") .toArray() .subscribe(onNext: { print($0) }) // ["A', "B", "C"] 출처 : http://reactivex.io/documentation/ko/operators.html ReactiveX - Operators 연산자 소개 ReactiveX를 지원하는 언어 별 구현체들은 다양한 연산자들을 제공하는데, 이 중에는 공통적으로 제공되는 연산자도 있지만 반대로.. 2021. 12. 14.
[Rxswift] Operators - 연결(9) 좀 더 정확히 제어되는 구독 역학을 가진 전문 Observable들 - Connect, Publish, RefCount, Replay 1. Publish Publish — 일반 Observable을 Connectable Observable로 변환한다 구현부 public func publish() -> ConnectableObservable { self.multicast { PublishSubject() } } 2. Connect Connect — 구독자가 항목 배출을 시작할 수 있도록 Connectable Observable에게 명령을 내린다 구현부 override func connect() -> Disposable { return self.lock.performLocked { if let connect.. 2021. 12. 14.
[RxSwift] Operators - 수학과 집계(8) Observable이 배출하는 항목 전체를 대상으로 동작하는 연산자들 - Concat, Reduce 1. Concat Concat — 두 개 이상의 Observable들이 항목을 발행할 때 Observable 순서대로 배출하는 항목들을 하나의 Observable 배출로 연이어 배출한다 구현부 public func concat(_ second: Source) -> Observable where Source.Element == Element { Observable.concat([self.asObservable(), second.asObservable()]) } 예시 let fruits = Observable.from(["🍏", "🍎"]) let animals = Observable.from(["🐶", "🐱".. 2021. 11. 29.
[RxSwift] Operators - 조건과 Boolean(7) 하나 이상의 Observable 또는 Observable이 배출한 항목을 평가하는 연산자들 - Amb, SkipUntil, SkipWhile, TakeUntil, TakeWhile 1. Amb Amb — 두 개 이상의 소스 Observable이 주어 질때, 그 중 첫 번째로 항목을 배출한 Observable이 배출하는 항목들을 전달한다 구현부 public static func amb(_ sequence: Sequence) -> Observable where Sequence.Element == Observable { sequence.reduce(Observable.never()) { a, o in a.amb(o.asObservable()) } } 예시 let left = PublishSubject() le.. 2021. 11. 29.
[RxSwift] Operators - 유틸리티(6) Obserable과 함께 동작하는 유용한 도우미 연산자들 - Delay, Do, Materialize / Dematerialize, ObserveOn, subscribe, SubscribeOn, Timeout, Using 안녕하세요 ◠‿◠ 고고입니다. 1. Delay Delay — Observable의 배출을 특정 시간동안 미룬다 Next 이벤트가 전달되는 시점을 지연시킨다 구독시점을 지연시키지는 않는다 구현부 public func delay(_ dueTime: RxTimeInterval, scheduler: SchedulerType) -> Observable { return Delay(source: self.asObservable(), dueTime: dueTime, scheduler: schedule.. 2021. 11. 29.