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

next()

Wait for the next child task to complete, and return the value it returned. 次の子タスクが完了するのを待機します、そしてそれが返した値を返します。

Declaration 宣言

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

Don’t call this method from outside the task where you created this task group. 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.

See Also 参照

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