RxSwift: Use Zip with different type observables

前端 未结 3 1804
误落风尘
误落风尘 2021-02-14 05:28

I\'m using RxSwift 2.0.0-beta

How can I combine 2 observables of different types in a zip like manner?

// This works
[just(1), just(1)].zip { intElement         


        
相关标签:
3条回答
  • 2021-02-14 05:43

    This works for me. I tested it in Xcode7, RxSwift-2.0.0-beta

    zip(just(1), just("!")) { (a, b) in 
        return (a,b)
    }
    
    0 讨论(0)
  • 2021-02-14 05:54

    Here is how to make it work for RxSwift 2.3+

    Observable.zip(Observable.just(1), Observable.just("!")) {
        return ($0, $1)
    }
    

    or

    Observable.zip(Observable.just(1), Observable.just("!")) {
        return (anyName0: $0, anyName1: $1)
    }
    
    0 讨论(0)
  • 2021-02-14 05:57

    If you using Singles (RxSwift 5.0+)

    Single.zip(single1, single2) {
        return ($0, $1)
    }
    

    or

    Observable.zip(single1.asObservable(), single2.asObservable()) {
        return ($0, $1)
    }
    

    Example:

    let task = Single
                    .zip(repository.getArrayA(), repository.getArrayB())
                    { (a: [A], b: [B]) in
                        return (a, b)
                    }                    
                    .do(onSuccess: { (zip) in
                    let (a, b) = zip
    
                    // your code
    
                    //example: self.updateSomething(a, b)
    
                })
                .asCompletable()
    
    0 讨论(0)
提交回复
热议问题