初始化器
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:)。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。