实例方法
next()
等待下一个子任务完成,并返回它返回的值或重新抛出它抛出的错误。
声明
mutating func next() async throws -> ChildTaskResult?
返回值
下一个完成的子任务返回的值。
详述
对该方法的连续调用返回的值按照任务 completed
的顺序出现,而不是按照这些任务添加到任务组的顺序出现。例如:
group.addTask { 1 }
group.addTask { 2 }
print(await group.next())
// Prints either "2" or "1".
如果任务组中没有任何挂起的任务,则此方法返回 nil
,它允许您编写以下内容以等待单个任务完成:
if let first = try await group.next() {
return first
}
它还允许您编写如下代码来等待所有子任务完成,并收集它们返回的值:
while let first = try await group.next() {
collected += value
}
return collected
等待空组立即返回 nil
而不会暂停。
您还可以使用 for
- await
- in
循环来收集任务组的结果:
for await try value in group {
collected += value
}
如果下一个子任务引发错误,并且您将该错误从此方法传播到对ThrowingTaskGroup.withThrowingTaskGroup(of:returning:body:)
方法,则该组中所有剩余的子任务都被隐式取消。
不要从创建此任务组的任务外部调用此方法。在大多数情况下,Swift 类型系统可以防止这种错误;例如,因为 add(priority:operation:)
方法正在变异,所以不能像子任务一样从并发执行上下文中调用该方法。
可用版本
iOS 13.0+, iPadOS 13.0+, macOS 10.15+, Mac Catalyst 13.0+, tvOS 13.0+, watchOS 6.0+
相关用法
- Swift ThrowingTaskGroup nextResult()用法及代码示例
- Swift ThrowingTaskGroup prefix(while:)用法及代码示例
- Swift ThrowingTaskGroup max(by:)用法及代码示例
- Swift ThrowingTaskGroup prefix(_:)用法及代码示例
- Swift ThrowingTaskGroup compactMap(_:)用法及代码示例
- Swift ThrowingTaskGroup first(where:)用法及代码示例
- Swift ThrowingTaskGroup dropFirst(_:)用法及代码示例
- Swift ThrowingTaskGroup map(_:)用法及代码示例
- Swift ThrowingTaskGroup allSatisfy(_:)用法及代码示例
- Swift ThrowingTaskGroup contains(where:)用法及代码示例
- Swift ThrowingTaskGroup contains(_:)用法及代码示例
- Swift ThrowingTaskGroup reduce(_:_:)用法及代码示例
- Swift ThrowingTaskGroup drop(while:)用法及代码示例
- Swift ThrowingTaskGroup flatMap(_:)用法及代码示例
- Swift ThrowingTaskGroup min()用法及代码示例
- Swift ThrowingTaskGroup filter(_:)用法及代码示例
- Swift ThrowingTaskGroup min(by:)用法及代码示例
- Swift ThrowingTaskGroup max()用法及代码示例
- Swift ThrowingTaskGroup.Iterator用法及代码示例
- Swift TaskGroup max()用法及代码示例
- Swift TaskGroup filter(_:)用法及代码示例
- Swift TaskGroup contains(where:)用法及代码示例
- Swift TaskGroup allSatisfy(_:)用法及代码示例
- Swift TaskGroup prefix(_:)用法及代码示例
- Swift TextOutputStream用法及代码示例
注:本文由纯净天空筛选整理自apple.com大神的英文原创作品 ThrowingTaskGroup next()。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。