Skip to content

Instantly share code, notes, and snippets.

@WyriHaximus
Created September 24, 2014 20:41
Show Gist options
  • Save WyriHaximus/daf7c749c89ed2f106fe to your computer and use it in GitHub Desktop.
Save WyriHaximus/daf7c749c89ed2f106fe to your computer and use it in GitHub Desktop.
<?php
require 'vendor/autoload.php';
$loop = \React\EventLoop\Factory::create();
function yieldPromiseA($promise) {
while (true) {
echo 'a', PHP_EOL;
echo (yield \Async\Util::async($promise)), PHP_EOL;
echo 'b', PHP_EOL;
break;
}
}
function yieldPromiseB($promise) {
while (true) {
echo 'c', PHP_EOL;
echo (yield \Async\Util::async($promise)), PHP_EOL;
echo 'd', PHP_EOL;
break;
}
}
$deferredA = new \React\Promise\Deferred();
$promiseA = $deferredA->promise();
$deferredB = new \React\Promise\Deferred();
$promiseB = $deferredB->promise();
$taskA = new \Async\Task\GeneratorTask(yieldPromiseA($promiseA));
$taskB = new \Async\Task\GeneratorTask(yieldPromiseB($promiseB));
$scheduler = new \Async\Scheduler\ReactEventLoopScheduler($loop);
$scheduler->schedule($taskA);
$scheduler->schedule($taskB);
$loop->addTimer(0.1, function() {
echo 11, PHP_EOL;
echo 22, PHP_EOL;
});
$loop->addTimer(3, function() use ($deferredA) {
$deferredA->resolve(1.5);
});
$loop->addTimer(1, function() use ($deferredB) {
$deferredB->resolve(1.5);
});
$loop->run();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment