初始化器
init(unfolding:
init(unfolding:onCancel:)
從給定的 element-producing 閉包構造一個異步流,並帶有一個可選的閉包來處理取消。
聲明
init(
unfolding produce: @escaping () async -> Element?,
onCancel: (() -> Void)? = nil
)
參數
produce
為流異步生成元素的閉包。
onCancel
取消流任務時執行的閉包。
詳述
當您有一個可以為流生成元素的異步函數並且不想手動調用延續時,請使用此便捷初始化程序。這個初始化器“unfolds” 你的閉包變成了一個異步流。創建的流自動處理對 AsyncSequence
協議的一致性,包括終止(通過取消或從閉包返回 nil
以完成迭代)。
以下示例顯示了使用此初始化程序創建的 AsyncStream
,該初始化程序在 one-second 間隔上生成隨機數。此示例使用 Swift 多尾隨閉包語法,它省略了 unfolding
參數標簽。
let stream = AsyncStream<Int> {
await Task.sleep(1 * 1_000_000_000)
return Int.random(in: 1...10)
}
onCancel: { @Sendable () in print ("Canceled.") }
)
// Call point:
for await random in stream {
print ("\(random)")
}
可用版本
iOS 13.0+, iPadOS 13.0+, macOS 10.15+, Mac Catalyst 13.0+, tvOS 13.0+, watchOS 6.0+
相關用法
- Swift AsyncStream init(_:bufferingPolicy:_:)用法及代碼示例
- Swift AsyncStream first(where:)用法及代碼示例
- Swift AsyncStream prefix(_:)用法及代碼示例
- Swift AsyncStream drop(while:)用法及代碼示例
- Swift AsyncStream max(by:)用法及代碼示例
- Swift AsyncStream dropFirst(_:)用法及代碼示例
- Swift AsyncStream reduce(_:_:)用法及代碼示例
- Swift AsyncStream prefix(while:)用法及代碼示例
- Swift AsyncStream allSatisfy(_:)用法及代碼示例
- Swift AsyncStream contains(_:)用法及代碼示例
- Swift AsyncStream min()用法及代碼示例
- Swift AsyncStream contains(where:)用法及代碼示例
- Swift AsyncStream flatMap(_:)用法及代碼示例
- Swift AsyncStream filter(_:)用法及代碼示例
- Swift AsyncStream compactMap(_:)用法及代碼示例
- Swift AsyncStream min(by:)用法及代碼示例
- Swift AsyncStream map(_:)用法及代碼示例
- Swift AsyncStream max()用法及代碼示例
- Swift AsyncStream用法及代碼示例
- Swift AsyncSequence dropFirst(_:)用法及代碼示例
- Swift AsyncSequence reduce(_:_:)用法及代碼示例
- Swift AsyncSequence first(where:)用法及代碼示例
- Swift AsyncSequence prefix(_:)用法及代碼示例
- Swift AsyncSequence map(_:)用法及代碼示例
- Swift AsyncSequence allSatisfy(_:)用法及代碼示例
注:本文由純淨天空篩選整理自apple.com大神的英文原創作品 AsyncStream init(unfolding:onCancel:)。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。