Publishers.Zip
μ λ€λ¦ ꡬ쑰체 | λ κ°μ μμ Publisherμ zip ν¨μλ₯Ό μ μ©νμ¬ μμ±λλ Publisher
λ κ°μ μ€νΈλ¦Όμ λ°°μΆ νλͺ©μ΄ μμ μ΄λ£° λ κ·Έ κ°λ€μ λνμ¬ ν¨μλ₯Ό μ μ©ν κ°μ λ°ννλ€.
μ΄λμ λΌμ΄μ λ μ‘°ν©ν λ κ°μ Publisherλ₯Ό λ°λλ€.
μΈμμ λ€μ΄κ°λ λͺ¨λ Publisherdμ μλ¬ νμ μ κ°μμΌ νλ€.
zip μ€νΌλ μ΄ν°μ κ΄λ ¨μ΄ μλ€.
let aSubject = PassthroughSubject<Int, Never>()
let bSubject = PassthroughSubject<String, Never>()
// 1. Publishers.Zip Publisher
Publishers
.Zip(aSubject, bSubject)
.sink(receiveCompletion: { completion in
switch 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 Operator
aSubject
.zip(bSubject)
.sink(receiveCompletion: { completion in
switch 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 Operator
aSubject
.zip(bSubject) { "\($0)\($1)" }
.sink(receiveCompletion: { completion in
switch 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
// 4
aSubject.send(1)
// 5
aSubject.send(2)
// 6
bSubject.send("a")
// 7
bSubject.send("b")
// 8
aSubject.send(3)Int νμ
κ°μ λ°λ aSubjectμ String νμ
κ°μ λ°λ bSubjectλ₯Ό zip μ€νΌλ μ΄ν°λ₯Ό μ¬μ©νμ¬ κ²°ν©νμλ€.
1κ³Ό 2μ μ½λλ λ€μκ³Ό κ°μ΄ λμνλ€.
4μ μ€νμ μν΄
aSubjectμ 1μ κ°μ μ λ¬νλ€.bSubjectμλ ν΄λΉ κ°κ³Ό μμ μ΄λ£° μ μλ κ°μ΄ μμΌλ―λ‘ ν΄λΉ Publisherλ κ°μ λ΄μ§ μλλ€.5μ μ€νμ μν΄
aSubjectμ 2μ κ°μ μ λ¬νλ€.bSubjectμλ ν΄λΉ κ°κ³Ό μμ μ΄λ£° μ μλ κ°μ΄ μμΌλ―λ‘ ν΄λΉ Publisherλ κ°μ λ΄μ§ μλλ€.6μ μ€νμ μν΄
bSubjectμ aμ κ°μ μ λ¬νλ€.aSubjectμλ 1κ³Ό 2μ κ°μ΄ μ λ¬λμκ³ , 1μ κ°μ΄ aμ κ°κ³Ό μμ μ΄λ£¨μ΄ ν΄λΉ Publisherλ (1, "a")μ κ°μ λΈλ€.7μ μ€νμ μν΄
bSubjectμ bμ κ°μ μ λ¬νλ€.bSubjectμλ 1κ³Ό 2μ κ°μ΄ μ λ¬λμκ³ , 2μ κ°μ΄ bμ κ°κ³Ό μμ μ΄λ£¨μ΄ ν΄λΉ Publisherλ (2, "b")μ κ°μ λΈλ€.8μ μ€νμ μν΄
aSubjectμ 3μ κ°μ μ λ¬νλ€.bSubjectμλ ν΄λΉ κ°κ³Ό μμ μ΄λ£° μ μλ κ°μ΄ μμΌλ―λ‘ ν΄λΉ Publisherλ κ°μ λ΄μ§ μλλ€.
3μ μ½λλ λ€μκ³Ό κ°μ΄ λμνλ€.
4μ μ€νμ μν΄
aSubjectμ 1μ κ°μ μ λ¬νλ€.bSubjectμλ ν΄λΉ κ°κ³Ό μμ μ΄λ£° μ μλ κ°μ΄ μμΌλ―λ‘ ν΄λΉ Publisherλ κ°μ λ΄μ§ μλλ€.5μ μ€νμ μν΄
aSubjectμ 2μ κ°μ μ λ¬νλ€.bSubjectμλ ν΄λΉ κ°κ³Ό μμ μ΄λ£° μ μλ κ°μ΄ μμΌλ―λ‘ ν΄λΉ Publisherλ κ°μ λ΄μ§ μλλ€.6μ μ€νμ μν΄
bSubjectμ aμ κ°μ μ λ¬νλ€.aSubjectμλ 1κ³Ό 2μ κ°μ΄ μ λ¬λμκ³ , 1μ κ°μ΄ aμ κ°κ³Ό μμ μ΄λ£¨μ΄ ν΄λΉ Publisherλ 1aμ κ°μ λΈλ€.7μ μ€νμ μν΄
bSubjectμ bμ κ°μ μ λ¬νλ€.bSubjectμλ 1κ³Ό 2μ κ°μ΄ μ λ¬λμκ³ , 2μ κ°μ΄ bμ κ°κ³Ό μμ μ΄λ£¨μ΄ ν΄λΉ Publisherλ 2bμ κ°μ λΈλ€.8μ μ€νμ μν΄
aSubjectμ 3μ κ°μ μ λ¬νλ€.bSubjectμλ ν΄λΉ κ°κ³Ό μμ μ΄λ£° μ μλ κ°μ΄ μμΌλ―λ‘ ν΄λΉ Publisherλ κ°μ λ΄μ§ μλλ€.
RxSwift
zip μ€νΌλ μ΄ν°λ₯Ό μ¬μ©νμ¬ κ΅¬νν μ μλ€.
ReactiveSwift
zip μ€νΌλ μ΄ν°λ₯Ό μ¬μ©νμ¬ κ΅¬νν μ μλ€.
μ°Έκ³
Last updated
Was this helpful?