初始化器
init(unfolding:)
从给定的 element-producing 闭包构造一个异步抛出流。
声明
init(unfolding produce: @escaping () async throws -> Element?) where Failure == Error
参数
produce
为流异步生成元素的闭包。
详述
当您有一个可以为流生成元素的异步函数并且不想手动调用延续时,请使用此便捷初始化程序。这个初始化器“unfolds” 你的闭包变成了一个full-blown 异步流。创建的流会自动处理对AsyncSequence
协议的遵守情况。要以错误终止流,请从闭包中抛出错误。
以下示例显示了使用此初始化程序创建的 AsyncThrowingStream
,该初始化程序在 one-second 间隔上生成随机数。如果随机数可被 5 整除且没有余数,则流将抛出 MyRandomNumberError
。
let stream = AsyncThrowingStream<Int, Error> {
await Task.sleep(1 * 1_000_000_000)
let random = Int.random(in: 1...10)
if (random % 5 == 0) {
throw MyRandomNumberError()
}
return random
}
// Call point:
do {
for try await random in stream {
print ("\(random)")
}
} catch {
print ("\(error)")
}
可用版本
iOS 13.0+, iPadOS 13.0+, macOS 10.15+, Mac Catalyst 13.0+, tvOS 13.0+, watchOS 6.0+
相关用法
- Swift AsyncThrowingStream init(_:bufferingPolicy:_:)用法及代码示例
- Swift AsyncThrowingStream filter(_:)用法及代码示例
- Swift AsyncThrowingStream max(by:)用法及代码示例
- Swift AsyncThrowingStream contains(where:)用法及代码示例
- Swift AsyncThrowingStream map(_:)用法及代码示例
- Swift AsyncThrowingStream prefix(_:)用法及代码示例
- Swift AsyncThrowingStream min(by:)用法及代码示例
- Swift AsyncThrowingStream allSatisfy(_:)用法及代码示例
- Swift AsyncThrowingStream contains(_:)用法及代码示例
- Swift AsyncThrowingStream compactMap(_:)用法及代码示例
- Swift AsyncThrowingStream reduce(_:_:)用法及代码示例
- Swift AsyncThrowingStream first(where:)用法及代码示例
- Swift AsyncThrowingStream drop(while:)用法及代码示例
- Swift AsyncThrowingStream flatMap(_:)用法及代码示例
- Swift AsyncThrowingStream min()用法及代码示例
- Swift AsyncThrowingStream prefix(while:)用法及代码示例
- Swift AsyncThrowingStream max()用法及代码示例
- Swift AsyncThrowingStream dropFirst(_:)用法及代码示例
- Swift AsyncThrowingStream用法及代码示例
- Swift AsyncThrowingFlatMapSequence min()用法及代码示例
- Swift AsyncThrowingMapSequence reduce(_:_:)用法及代码示例
- Swift AsyncThrowingPrefixWhileSequence drop(while:)用法及代码示例
- Swift AsyncThrowingMapSequence contains(_:)用法及代码示例
- Swift AsyncThrowingPrefixWhileSequence filter(_:)用法及代码示例
- Swift AsyncThrowingDropWhileSequence first(where:)用法及代码示例
注:本文由纯净天空筛选整理自apple.com大神的英文原创作品 AsyncThrowingStream init(unfolding:)。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。