RxSwift 버전에서 아래와 같이 CombineLatest 연산자 이용해서 결합했을 때는
let intOb = Observable.from([1, 2, 3, 4])
let strOb = Observable.from([“a”, “b”, “c”, “d”])
Observable.combineLatest(intOb, strOb)
.subscribe(onNext: {
print($0)
})
.disposed(by: bag)
제가 의도한대로 정상적으로
(1, “a”)
(2, “a”)
(2, “b”)
(3, “b”)
(3, “c”)
(4, “c”)
(4, “d”)
결과가 출력되는데 위와 동일하게 제가 의도한대로 Combine으로 아래와 같이 구현했을 때는
let intPub = [1, 2, 3, 4].publisher
let strPub = [“a”, “b”, “c”, “d”].publisher
intPub
.combineLatest(strPub)
.sink {
print($0)
}
.store(in: &cancelBag)
(4, “a”)
(4, “b”)
(4, “c”)
(4, “d”)
와 같이 출력되더라구요.
처음 intPub의 Publisher가 모두 element를 방출하고 난 후에 strPub가 방출을 시작해서 이런 문제가 생기는거 같은데
sink로 구독한 시점부터 방출하기 시작하기 때문에 RxSwift와 같이 동일하게 출력되어야 맞는게 아닌건가요…?
제가 잘못 알고 있는게 무엇인지 또 RxSwift와 동일하게 하려면 어떻게 바꿔야 하는지 가르침을 주시면 정말 감사하겠습니다!
-
이 게시글은 zxc1460에 의해 3 years, 3 months 전에 수정됐습니다.