實例方法
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()。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。