XCode 16.4 日本語化計画
次の子タスクが完了するまで待機し、返された値を返します。
@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:) メソッドは変更可能であるため、子タスクのような同時実行コンテキストからはこのメソッドは呼び出せません。
グループに残りのタスクがあるかどうかを示すブール値。
func waitForAll(isolation: isolated (any Actor)?) async
グループの残りのタスクがすべて完了するまで待ちます。