Skip to content

Instantly share code, notes, and snippets.

@PJZ9n
Last active April 20, 2020 23:23
Show Gist options
  • Save PJZ9n/a1f3ed60a1d8a0a4de93eb1b3b841b9e to your computer and use it in GitHub Desktop.
Save PJZ9n/a1f3ed60a1d8a0a4de93eb1b3b841b9e to your computer and use it in GitHub Desktop.
コルーチンのやつ(動作未確認)
<?php
function test(): \Generator
{
for ($i = 1; $i <= 5; $i++) {
yield;//ここでGeneratorを返す(難しい) 位置が違った,修正済み
echo "Number is" . $i . PHP_EOL;
}
}
$this->getScheduler()->scheduleRepeatingTask(new class(test()) extends Task {
/** @var \Generator */
private $generator;
public function __construct(\Generator $generator)
{
$this->generator = $generator;
}
public function onRun(int $currentTick): void
{
if ($this->generator->valid()) {//yieldされていたら
$this->generator->next();//進む
echo "進みました" . PHP_EOL;
} else {//yieldされなくなったら(処理が終わったら)
$this->getHandler()->cancel();//タスクをキャンセル(終了)する
echo "終了しました" . PHP_EOL;
}
}
}, 20);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment