Async implementation of innmind/time-warp
to allow switching to another task when halting the current process.
composer require innmind/async-time-warp
use Innmind\Async\TimeWarp\Halt;
use Innmind\TimeContinuum\Earth\{
Clock,
Period\Second,
};
use Innmind\Mantle\{
Source\Predetermined,
Suspend,
Forerunner,
};
$clock = new Clock;
$source = Predetermined::of(
static function(Suspend $suspend) use ($clock) {
$halt = Halt::of($clock, $suspend);
$halt(new Second(2));
echo 'World !';
},
static function(Suspend $suspend) use ($clock) {
$halt = Halt::of($clock, $suspend);
$halt(new Second(1));
echo 'Hello ';
},
);
Forerunner::of($clock)(null, $source); // will print "Hello World !" in 2 seconds