PublishSubject
に onError()
でError を流した場合、次回以降同一の Subject
オブジェクトをサブスクライブすると、初回時に Error が流れてくるようです🧑🔧
具体的には下記のような感じです。
let relay = PublishSubject<String>.init() let disposeBag = DisposeBag() func subscribeRelay() { relay.asObserver() .subscribe(onNext: { text in print(text) }, onError: { error in print(error) }) .disposed(by: disposeBag) DispatchQueue.main.asyncAfter(deadline: .now() + 2) { self.relay.onError(FideeError.unknown) } } // subscribeRelay() // 2秒後: unknown // subscribeRelay() // 直後: unknown
まあ、基本的に Observable
と同じで、onCompleted()
と onError()
が流れた場合は、onNext()
は流れてこなくなるので、次に subscribe する時は新しいオブジェクトを発行するなりすると思うので、あまり影響は無いかもしれませんが、これにより予期しないバグが発生する可能性もあるので気をつけたいですね👷♀️