RxSwift를 21일간 공부하는 루틴
"Rx를 기깔나게 쓰는 신입개발자 도전" 시작 🚀
지금까지 정리했던 subject들은 completed이벤트가 전달되기 전에 구독을 시작했다면 즉시 이벤트가 전달이 되었다.
하지만 오늘 정리할 AsyncSubject는 앞서 정리한 subject들과 이벤트 전달시점이 다르다.
AsyncSubject는 Observable이 완료된 후, 즉 onCompleted 가 전달된 후 가장 최신의 마지막값 1개를 전달한다.
bufferSize를 파라미터로 지정을 해줬던 BehaviorSubject와 달리 파라미터 없이 생성이 가능하다.
let asyncS = AsyncSubject<String>()
arr.forEach { asyncS.onNext($0) }
asyncS.subscribe { print("o1 : \($0)")}
//asyncS.onCompleted() //1
//asyncS.onError(Err.err) //2
print("completed되지 않으면 어떠한 event도 전달안됨") //3
asyncS.subscribe { print("o2 : \($0)")}
print("completed되지 않으면 어떠한 event도 전달안됨")
이 코드가 실행이 된다. asyncSubject는 완료이벤트가 전달이 되어야 가장 최신 이벤트를 전달해주기 때문이다.asyncS.onCompleted() //1
를 실행했을때,// output :
o1 : next(c)
o1 : completed
o2 : next(c)
o2 : completed
next(c)를 전달 받고,completed도 전달 받은 것을 확인할 수 있다.
asyncS.onError(Err.err) //2
를 실행했을때,다음에는 relay에 대해 알아보도록 하겠다.