當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Swift Result.Publisher merge(with:_:_:_:_:_:)用法及代碼示例


實例方法

merge(with:_:_:_:_:_:)

將來自該發布者的元素與來自其他六個發布者的元素組合在一起,提供交錯的元素序列。

聲明

func merge<B, C, D, E, F, G>(
    with b: B,
    _ c: C,
    _ d: D,
    _ e: E,
    _ f: F,
    _ g: G
) -> Publishers.Merge7<Self, B, C, D, E, F, G> where B : Publisher, C : Publisher, D : Publisher, E : Publisher, F : Publisher, G : Publisher, Self.Failure == B.Failure, Self.Output == B.Output, B.Failure == C.Failure, B.Output == C.Output, C.Failure == D.Failure, C.Output == D.Output, D.Failure == E.Failure, D.Output == E.Output, E.Failure == F.Failure, E.Output == F.Output, F.Failure == G.Failure, F.Output == G.Output

返回值

當任何上遊發布者發出事件時發出事件的發布者。

參數

b

第二個發布者。

c

第三個發布者。

d

第四發布者。

e

第五發布者。

f

第六位發布者。

g

第七位發布者。

詳述

當您想要在任何上遊發布者發出元素時接收新元素時,請使用 Publisher/merge(with:_:_:_:_:_:)。要在所有上遊發布者發出值時從所有上遊發布者那裏接收最新值的元組,請使用 Publisher/combineLatest(_:_:_:)-48buc 。要組合來自多個上遊發布者的元素,請使用 Publisher/zip(_:_:_:)-16rcy

在這個例子中,Publisher/merge(with:_:_:_:_:_:) 接收來自上遊發布者的輸入;它將交錯的元素重新發布到下遊:


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>()


cancellable = pubA
    .merge(with: pubB, pubC, pubD, pubE, pubE, pubG)
    .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)


pubA.send(2)
pubB.send(50)
pubC.send(100)
pubD.send(-2)
pubE.send(33)
pubF.send(33)
pubG.send(54)


//Prints: "1 40 90 -1 33 44 54 2 50 100 -2 33 33 54"

合並的發布者繼續發出元素,直到所有上遊發布者完成。如果上遊發布者產生錯誤,則合並的發布者會因該錯誤而失敗。

可用版本

iOS 13.0+, iPadOS 13.0+, macOS 10.15+, Mac Catalyst 13.0+, tvOS 13.0+, watchOS 6.0+

相關用法


注:本文由純淨天空篩選整理自apple.com大神的英文原創作品 Result.Publisher merge(with:_:_:_:_:_:)。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。