Skip to main content

never?

neverObservable이 아무런 이벤트도 방출시키지 않게 합니다.

마블다이어그램을 보시면 아무것도 emit 하지 않고 종료마저 되지 않습니다. 그 뜻은 무한한 상태로 스크림이 종료되지 않는다는 것을 알 수 있습니다.

사용방법

아래는 never의 가장 기본적인 형태입니다:

Observable<Int>.never()

neversubscribe하면 onNextonCompleted는 반환되지 않고 오직 onDisposed만을 할 수 있습니다.

never를 사용하게 된다면 아무런 이벤트를 방출시키지 않는 Observable을 생성할 수 있습니다.

뜯어보기

public static func never() -> Observable<Element> {
NeverProducer()
}

final private class NeverProducer<Element>: Producer<Element> {
override func subscribe<Observer: ObserverType>(_ observer: Observer) -> Disposable where Observer.Element == Element {
Disposables.create()
}
}

empty와의 차이점은 onComplete가 구현되지 않아있습니다. 때문에 emptyonComplete를 호출시켜서 스크림을 종료시키지만 neveronComplete를 호출하지 않아서 스크림이 종료되지 않습니다.