Combine의 CombineLatest 연산자 관련해서 질문이 있습니다.

0 답변 글타래를 보이고 있습니다
  • 글쓴이
    • zxc1460
      참가자
      • 글작성 : 1
      • 답글작성 : 0
      1,100 포인트

      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에 의해 1 month 전에 수정됐습니다.
0 답변 글타래를 보이고 있습니다
  • 답변은 로그인 후 가능합니다.

logo landscape small

사업자번호 : 260-27-00477
통신판매업 신고번호 : 제 2020-충북청주-0663 호
고객센터 : 카카오톡채널 @yagom