Skip to main content
Drupal API
User account menu
  • Log in

Breadcrumb

  1. Drupal Core 11.1.x
  2. functions.php

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\Promise

Code

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);
}
RSS feed
Powered by Drupal