function race
Initiates a competitive race that allows one winner. Returns a promise which is resolved in the same way the first settled promise resolves.
The returned promise will become **infinitely pending** if `$promisesOrValues` contains 0 items.
@template T
Parameters
iterable<PromiseInterface<T>|T> $promisesOrValues:
Return value
PromiseInterface<T>
File
-
vendor/
react/ promise/ src/ functions.php, line 130
Namespace
React\PromiseCode
function race(iterable $promisesOrValues) : PromiseInterface {
$cancellationQueue = new Internal\CancellationQueue();
/** @var Promise<T> */
return new Promise(function (callable $resolve, callable $reject) use ($promisesOrValues, $cancellationQueue) : void {
$continue = true;
foreach ($promisesOrValues as $promiseOrValue) {
$cancellationQueue->enqueue($promiseOrValue);
resolve($promiseOrValue)->then($resolve, $reject)
->finally(function () use (&$continue) : void {
$continue = false;
});
if (!$continue && !\is_array($promisesOrValues)) {
break;
}
}
}, $cancellationQueue);
}