インスタンスメソッド


next(isolation:)


次の子タスクが完了するまで待機し、返された値を返します。


iOS 13.0+ iPadOS 13.0+ Mac Catalyst 13.0+ macOS 10.15+

tvOS 13.0+ visionOS 1.0+ watchOS 6.0+

@backDeployed(before: macOS 15.0, iOS 18.0, watchOS 11.0, tvOS 18.0, visionOS 2.0)
mutating func next(isolation: isolated (any Actor)? = #isolation) async -> ChildTaskResult?




戻り値


完了する次の子タスクによって返される値。



議論


このメソッドを連続して呼び出した場合、返される値は、タスクがタスクグループに追加された順序ではなく、タスクが 完了した 順序で表示されます。例えば:


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 value = try await group.next() {
   collected += value
}
return collected

空のグループを待機すると、中断せずにすぐに nil が返されます。


for-await-in ループを使用して、タスクグループの結果を収集することもできます。


for await try value in group {
    collected += value
}

このメソッドを、このタスクグループを作成したタスクの外部から呼び出さないでください。ほとんどの場合、Swift の型システムがこのミスを防いでくれます。例えば、add(priority:operation:) メソッドは変更可能であるため、子タスクのような同時実行コンテキストからはこのメソッドは呼び出せません。





以下も見よ


個々の結果にアクセスする


var isEmpty: Bool

グループに残りのタスクがあるかどうかを示すブール値。


func waitForAll(isolation: isolated (any Actor)?) async

グループの残りのタスクがすべて完了するまで待ちます。














トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ