当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Swift TaskGroup next()用法及代码示例


实例方法

next()

等待下一个子任务完成,并返回它返回的值。

声明

mutating func next() async -> 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
}

不要从创建此任务组的任务外部调用此方法。在大多数情况下,Swift 类型系统可以防止这个错误。例如,因为 add(priority:operation:) 方法正在变异,所以不能像子任务一样从并发执行上下文中调用该方法。

可用版本

iOS 13.0+, iPadOS 13.0+, macOS 10.15+, Mac Catalyst 13.0+, tvOS 13.0+, watchOS 6.0+

相关用法


注:本文由纯净天空筛选整理自apple.com大神的英文原创作品 TaskGroup next()。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。