await_any_of_or_fail

(PHP 8.6+, True Async 1.0)

await_any_of_or_fail() — 처음 N개의 태스크가 성공적으로 완료되기를 대기합니다. 처음 N개 중 하나가 실패하면 예외를 던집니다.

설명

await_any_of_or_fail(
    int $count,
    iterable $triggers,
    ?Async\Awaitable $cancellation = null,
    bool $preserveKeyOrder = true
): array

매개변수

count 대기할 성공 결과의 수입니다. 0이면 빈 배열을 반환합니다.

triggers Async\Completable 객체의 반복 가능한 컬렉션입니다.

cancellation 대기를 취소하기 위한 선택적 Awaitable입니다.

preserveKeyOrder true이면 결과 키가 입력 배열의 키에 해당합니다. false이면 완료 순서대로 반환됩니다.

반환 값

$count개의 성공 결과 배열입니다.

오류/예외

$count개의 성공에 도달하기 전에 태스크가 실패하면 해당 예외가 던져집니다.

예제

예제 #1 5개 중 2개의 결과 가져오기

<?php
use function Async\spawn;
use function Async\await_any_of_or_fail;

$coroutines = [];
for ($i = 0; $i < 5; $i++) {
    $coroutines[] = spawn(file_get_contents(...), "https://api/server-$i");
}

// 성공한 응답 2개를 대기
$results = await_any_of_or_fail(2, $coroutines);
echo count($results); // 2
?>

참고

참고: triggers 매개변수는 Iterator 구현을 포함한 모든 iterable을 허용합니다. Iterator 예제를 참조하세요.

같이 보기