let aSubject = PassthroughSubject<Int, Never>()let bSubject = PassthroughSubject<String, Never>()// 1. Publishers.Zip PublisherPublishers .Zip(aSubject, bSubject) .sink(receiveCompletion:{ completion inswitch completion {case .failure: print("Combine Zip Error")case .finished: print("Combine Zip Finish")}}, receiveValue:{ value in print("Combine Zip : \(value)")}) .store(in:&cancellables)// Combine Zip : (1, "a")// Combine Zip : (2, "b")// 2. zip OperatoraSubject .zip(bSubject) .sink(receiveCompletion:{ completion inswitch completion {case .failure: print("Combine Zip Error")case .finished: print("Combine Zip Finish")}}, receiveValue:{ value in print("Combine Zip : \(value)")}) .store(in:&cancellables)// Combine Zip : (1, "a")// Combine Zip : (2, "b")// 3. zip OperatoraSubject .zip(bSubject){"\($0)\($1)"} .sink(receiveCompletion:{ completion inswitch completion {case .failure: print("Combine Zip Error")case .finished: print("Combine Zip Finish")}}, receiveValue:{ value in print("Combine Zip : \(value)")}) .store(in:&cancellables)// Combine Zip : 1a// Combine Zip : 2b// 4aSubject.send(1)// 5aSubject.send(2)// 6bSubject.send("a")// 7bSubject.send("b")// 8aSubject.send(3)
let aSubject = PublishSubject<Int>()
let bSubject = PublishSubject<String>()
Observable.zip(aSubject, bSubject)
.subscribe(onNext: { value in
print("RxSwift Zip : \(value)")
}, onError: { _ in
print("RxSwift Zip Error")
}, onCompleted: {
print("RxSwift Zip Finish")
})
.disposed(by: disposeBag)
aSubject.onNext(1)
aSubject.onNext(2)
bSubject.onNext("a")
bSubject.onNext("b")
aSubject.onNext(3)
// RxSwift Zip : (1, "a")
// RxSwift Zip : (2, "b")
let aProperty = MutableProperty<Int>(0)
let bProperty = MutableProperty<String>("")
aProperty.signal
.zip(with: bProperty.signal)
.observe { event in
switch event {
case let .value(value):
print("ReactiveSwift Zip : \(value)")
case .failed:
print("ReactiveSwift Zip Error")
case .completed:
print("ReactiveSwift Zip Finish")
default:
break
}
}
aProperty.value = 1
aProperty.value = 2
bProperty.value = "a"
bProperty.value = "b"
aProperty.value = 3
// ReactiveSwift Zip : (1, "a")
// ReactiveSwift Zip : (2, "b")
// ReactiveSwift Zip Finish