같은 타입의 퍼블리셔를 묶어 하나의 시퀀스로 베달함.
let publisher = PassthroughSubject<Int, Never>()
let pub2 = PassthroughSubject<Int, Never>()
let cancellable = publisher
.merge(with: pub2)
.sink (receiveCompletion: {print("\\($0)")},receiveValue: { print("\\($0)", terminator: " " )})
publisher.send(2)
pub2.send(2)
publisher.send(3)
pub2.send(22)
publisher.send(45)
pub2.send(22)
publisher.send(17)
pub2.send(completion: .finished)
publisher.send(18)
publisher.send(completion: .finished)
//2 2 3 22 45 22 17 18 finished
let pubA = PassthroughSubject<Int, Never>()
let pubB = PassthroughSubject<Int, Never>()
let pubC = PassthroughSubject<Int, Never>()
let pubD = PassthroughSubject<Int, Never>()
let pubE = PassthroughSubject<Int, Never>()
let pubF = PassthroughSubject<Int, Never>()
let pubG = PassthroughSubject<Int, Never>()
let pubH = PassthroughSubject<Int, Never>()
cancellable = pubA
.merge(with: pubB, pubC, pubD, pubE, pubF, pubG, pubH)
.sink { print("\\($0)", terminator: " " ) }
pubA.send(1)
pubB.send(40)
pubC.send(90)
pubD.send(-1)
pubE.send(33)
pubF.send(44)
pubG.send(54)
pubH.send(1000)
pubA.send(2)
pubB.send(50)
pubC.send(100)
pubD.send(-2)
pubE.send(33)
pubF.send(33)
pubG.send(54)
pubH.send(1001)
//Prints: "1 40 90 -1 33 44 54 1000 2 50 100 -2 33 33 54 1001"
upsteam. publisher가 끝나면 merge도 끝난다. 최대 8개 까지만 결합이 가능하다.