Instance Method インスタンスメソッド

next()

Wait for the next child task to complete, and return the value it returned or rethrow the error it threw. 次の子タスクが完了するのを待ちます、そしてそれが返した値を返します、またはそれがスローしたエラーを再スローします。

Declaration 宣言

mutating func next() async throws -> ChildTaskResult?

Return Value 戻り値

The value returned by the next child task that completes. 完了した次の子タスクによって返された値。

Discussion 解説

The values returned by successive calls to this method appear in the order that the tasks completed, not in the order that those tasks were added to the task group. For example: このメソッドへの連続した呼び出しによって返される値それらは、タスクそれらが完了した順に現れます、タスクがタスクグループに加えられた順にではなく。例えば:


group.addTask { 1 }
group.addTask { 2 }


print(await group.next())
// Prints either "2" or "1".

If there aren’t any pending tasks in the task group, this method returns nil, which lets you write the following to wait for a single task to complete: 何ら未解決タスクがタスクグループの中にないならば、このメソッドはnilを返します、それはあなたにある単一のタスクが完了するのを待つ以下を書かせます:


if let first = try await group.next() {
   return first
}

It also lets you write code like the following to wait for all the child tasks to complete, collecting the values they returned:


while let first = try await group.next() {
   collected += value
}
return collected

Awaiting on an empty group immediate returns nil without suspending. 空グループに対して待つことは、中断することなくnilを直ぐに返します。

You can also use a for-await-in loop to collect results of a task group:


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

If the next child task throws an error and you propagate that error from this method out of the body of a call to the ThrowingTaskGroup.withThrowingTaskGroup(of:returning:body:) method, then all remaining child tasks in that group are implicitly canceled.

Don’t call this method from outside the task where this task group was created. In most cases, the Swift type system prevents this mistake; for example, because the add(priority:operation:) method is mutating, that method can’t be called from a concurrent execution context like a child task. このメソッドを、このタスクグループが作成されたところのタスクの外側から呼び出さないでください。ほとんどの場合には、Swift型システムはこの誤りを防ぎます;例えば、add(priority:operation:)メソッドが変化することから、そのメソッドは子タスクのような並行性遂行文脈から呼び出されることができません。

See Also 参照

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

Related Documentation 関連文書

nextResult()