await_any_of

(PHP 8.6+, True Async 1.0)

await_any_of() — 처음 N개의 태스크 완료를 대기하며, 결과와 오류를 별도로 수집합니다. 개별 태스크가 실패해도 예외를 던지지 않습니다.

설명

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

매개변수

count 대기할 성공 결과의 수입니다.

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

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

preserveKeyOrder true이면 결과 키가 입력 배열의 키에 해당합니다.

fillNull true이면 실패한 태스크의 결과 배열에 null이 배치됩니다.

반환 값

두 요소의 배열: [$results, $errors]

예제

예제 #1 오류 허용 쿼럼

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

$nodes = ['node1', 'node2', 'node3', 'node4', 'node5'];

$coroutines = [];
foreach ($nodes as $node) {
    $coroutines[$node] = spawn(file_get_contents(...), "https://$node/vote");
}

// 쿼럼 대기: 5개 중 3개의 응답
[$results, $errors] = await_any_of(3, $coroutines);

if (count($results) >= 3) {
    echo "쿼럼 달성\n";
} else {
    echo "쿼럼 미달성, 오류: " . count($errors) . "\n";
}
?>

참고

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

같이 보기