Пример #1
0
<?php

require_once __DIR__ . '/../../vendor/autoload.php';
use function jubianchi\async\runtime\{await, all};
function producer($prefix, $length) : \generator
{
    for ($i = 0; $i < $length; $i++) {
        echo $prefix . '-' . $i . PHP_EOL;
        yield;
    }
    return $prefix . '-' . __LINE__;
}
var_dump(await(all(producer(__LINE__, 5), producer(__LINE__, 2))));
Пример #2
0
<?php

require_once __DIR__ . '/../../vendor/autoload.php';
use function jubianchi\async\runtime\{await};
function producer($prefix, $length) : \generator
{
    for ($i = 0; $i < $length; $i++) {
        echo $prefix . '-' . $i . PHP_EOL;
        yield;
    }
    return __LINE__;
}
var_dump(await(producer(__LINE__, 5)));
Пример #3
0
<?php

require_once __DIR__ . '/../../vendor/autoload.php';
use function jubianchi\async\runtime\{await, some};
function producer($prefix, $length) : \generator
{
    $cancel = false;
    for ($i = 0; $i < $length && $cancel === false; $i++) {
        echo $prefix . '-' . $i . PHP_EOL;
        $cancel = (bool) yield;
    }
    if ($cancel === true) {
        echo $prefix . '-canceled' . PHP_EOL;
    }
    return $prefix . '-' . __LINE__;
}
var_dump(await(some(2, producer(__LINE__, 5), producer(__LINE__, 10), producer(__LINE__, 2))));
Пример #4
0
<?php

require_once __DIR__ . '/../../vendor/autoload.php';
use function jubianchi\async\runtime\{await, race};
function producer($prefix, $length) : \generator
{
    $cancel = false;
    for ($i = 0; $i < $length && $cancel === false; $i++) {
        echo $prefix . '-' . $i . PHP_EOL;
        $cancel = (bool) yield;
    }
    if ($cancel === true) {
        echo $prefix . '-canceled' . PHP_EOL;
    }
    return $prefix . '-' . __LINE__;
}
var_dump(await(race(producer(__LINE__, 5), producer(__LINE__, 2))));