이번 시간에는 deferred 에 대해서 알아보도록 하겠습니다.
<aside> 💡 이름에서 부터 알 수 있듯이 무언가를 "미루다" 라는 의미로 사용되는 연산자 입니다. deferred는 Observable이 생성되는 시점을 구독자에 의해서 구독되기 전까지 미뤄주는 역할을 합니다.
</aside>
우선 아래 deferred의 선언부를 보시면 Observable을 리턴해준다는 사실을 알 수 있습니다.
public static func deferred(_ observableFactory: @escaping () throws -> Observable<Element>)
deferred는 Observable에서 직접 호출이 가능한데요.
let deferredObservable = Observable<String>.deferred {
//여기에서 **Observable**을 리턴해주면 됩니다.
}
위처럼 deferred클로저 내에서 실제로 구독할 Observable을 리턴해주면 됩니다.
원래 같으면 아래와 같이 사용하는 Observable을 구독과 동시에 연산하도록 미루고 싶다면
let observable = Observable.just("Avocado🥑")