實例屬性
publisher
一個組合發布者,將這個實例的結果隻發布給每個訂閱者一次,或者如果結果表明失敗則立即失敗。
聲明
var publisher: Result<Success, Failure>.Publisher { get }
當
Failure
符合 Error
時可用。詳述
在以下示例中,goodResult
使用整數值 1
提供成功的結果。連接到結果發布者的接收器訂閱者接收輸出 1
,然後是正常完成( Combine/Subscribers/Completion/finished
)。
let goodResult: Result<Int, MyError> = .success(1)
goodResult.publisher
.sink(receiveCompletion: { print("goodResult done: \($0)")},
receiveValue: { print("goodResult value: \($0)")} )
// Prints:
// goodResult value: 1
// goodResult done: finished
與始終發布單個值的 Combine/Just
發布者相比,如果結果為
,則此發布者可能不會發送任何值而是以錯誤終止。在下一個示例中,Result.failure(_:)
badResult
是包含自定義錯誤的失敗結果。連接到此結果的發布者的接收器訂閱者立即收到終止(Combine/Subscribers/Completion/failure(_:)
)。
struct MyError: Error, CustomDebugStringConvertible {
var debugDescription: String = "MyError"
}
let badResult: Result<Int, MyError> = .failure(MyError())
badResult.publisher
.sink(receiveCompletion: { print("badResult done: \($0)")},
receiveValue: { print("badResult value: \($0)")} )
// Prints:
// badResult done: failure(MyError)
可用版本
iOS 13.0+, iPadOS 13.0+, macOS 10.15+, Mac Catalyst 13.0+, tvOS 13.0+, watchOS 6.0+
相關用法
- Swift Result map(_:)用法及代碼示例
- Swift Result flatMap(_:)用法及代碼示例
- Swift Result get()用法及代碼示例
- Swift Result mapError(_:)用法及代碼示例
- Swift Result.Publisher zip(_:_:_:)用法及代碼示例
- Swift Result.Publisher tryLast(where:)用法及代碼示例
- Swift Result.Publisher sink(receiveCompletion:receiveValue:)用法及代碼示例
- Swift Result.Publisher merge(with:_:_:)用法及代碼示例
- Swift Result.Publisher tryCompactMap(_:)用法及代碼示例
- Swift Result.Publisher print(_:to:)用法及代碼示例
- Swift Result.Publisher sink(receiveValue:)用法及代碼示例
- Swift Result.Publisher eraseToAnyPublisher()用法及代碼示例
- Swift Result.Publisher setFailureType(to:)用法及代碼示例
- Swift Result.Publisher first(where:)用法及代碼示例
- Swift Result.Publisher output(at:)用法及代碼示例
- Swift Result.Publisher tryCatch(_:)用法及代碼示例
- Swift Result.Publisher dropFirst(_:)用法及代碼示例
- Swift Result.Publisher merge(with:_:_:_:_:_:_:)用法及代碼示例
- Swift Result.Publisher flatMap(maxPublishers:_:)用法及代碼示例
- Swift Result.Publisher map(_:_:_:)用法及代碼示例
- Swift Result.Publisher catch(_:)用法及代碼示例
- Swift Result.Publisher drop(while:)用法及代碼示例
- Swift Result.Publisher prefix(_:)用法及代碼示例
- Swift Result.Publisher timeout(_:scheduler:options:customError:)用法及代碼示例
- Swift Result.Publisher merge(with:_:)用法及代碼示例
注:本文由純淨天空篩選整理自apple.com大神的英文原創作品 Result publisher。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。