일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- graphql
- init?
- nestjs
- SwiftUI
- Operater
- Creating Operators
- RFC1738/1808
- URL(string:)
- NavigationLink
- Bug
- Operators
- @Environment
- @State
- ios14
- typeorm
- @Binding
- dismiss
- subject
- vim
- @EnvironmentObject
- NullObject
- RxCocoa
- IOS
- operator
- swift6
- nonisolated
- SWIFT
- RxSwift
- Xcode
- init
- Today
- Total
목록Development/RxSwift (36)
Tunko Development Diary
retry retry연산자는 옵저버블에서 에러가 발생하면 현재 시퀀스를 중단하고 다시 새로운 구독을 시작합니다. 새롭게 구독하는것이므로 기존에 있던 next이벤트들은 소멸되고 다시 시작합니다. retry 연산자 함수 원형 public func retry() -> Observable { CatchSequence(sources: InfiniteSequence(repeatedValue: self.asObservable())) } public func retry(_ maxAttemptCount: Int) -> Observable { CatchSequence(sources: Swift.repeatElement(self.asObservable(), count: maxAttemptCount)) } 함수 원형을 보시면..
catch, catchAndReturn 두 연산자 catch와 catchAndReturn 은 옵버버블에서 에러가 발생했을때에 대한 처리입니다. catch는 Error가 발생하면 새로운 옵저버블을 리턴해줍니다. catchAndReturn은 Error가 발생하면 특정 값을 Next이벤트로 전달합니다. let disposeBag = DisposeBag() enum TunkoError: Error { case error } let subject = PublishSubject() let errorSubject = PublishSubject() subject .catch { _ in errorSubject } .subscribe { print($0) } .disposed(by: disposeBag) subject...
scheduler는 cocoa에서의 GCD 사용과 비슷합니다. 옵저버블에서 각 연산자의 동작이나 구독할때 쓰레드를 설정해줄 수 있습니다. RxSwift에서 Scheduler를 지정하기 위해선 두가지 메소드를 사용할 수 있습니다. observe(on:) 과 subscribe(on:) 입니다. observe(on:)은 뒤에 오는 모든 연산자는 전달한 Scheduler에서 코드가 작업합니다. 반면 subscribe(on:)은 옵저버블이 구독되여 어떤 스케쥴에서 작업할지 지정해줍니다. 따라서 구독하는 시점에 반영되는 subscribe(on:)은 어디에서 작성해도 관계 없습니다. 이제 예제 코드와 출력 결과를 확인하겠습니다. let disposeBag = DisposeBag() let backgroundSched..
share 이 연산자를 설명하기에 앞서 multicast, publish, replay, refCount 기능이 통합된 연산자라고 생각하시면 편하실것 같습니다. https://huniroom.tistory.com/entry/RxSwift-sharing-Subscription-Operator-multicast?category=1019140 RxSwift) sharing Subscription Operator (multicast, publish, replay) multicast multicast 연산자는 하나의 옵저버블을 공유할떄 사용하는 연산자입니다. 하지만 서브젝트를 따로 생성하고 이벤트가 방출되길 원하는 시점에 .connect() 를 호출해 주어야 합니다. 함수 원형 huniroom.tistory.co..
RefCount extension ConnectableObservableType { public func refCount() -> Observable { RefCount(source: self) } } RefCount 는 ConnectableObservableType 형에만 따로 구현되어있습니다. 구현된것을 보면 파라미터는 없고 Observable 을 리턴합니다. RefCount는 옵저버블입니다. 내부에 ConnectableObservable을 유지하면서 새로운 구독자가 생성되는 시점에 자동으로 connect() 시켜줍니다. let disposeBag = DisposeBag() let oneSecondObservable = Observable.interval(.seconds(1), scheduler: M..