查詢

EvLoop::periodic()函式—用法及示例

「 在指定的時間間隔內重複呼叫給定的回撥函式 」


函式名稱:EvLoop::periodic()

適用版本:Ev 1.0.0 或更高版本

用法:EvLoop::periodic() 方法用於在指定的時間間隔內重複呼叫給定的回撥函式。

語法:

public EvPeriodic EvLoop::periodic(float $offset, float $interval, callable $callback [, mixed $data = null [, int $priority = 0]])

引數:

  • $offset:延遲呼叫回撥函式的時間(以秒為單位)。可以是浮點數。
  • $interval:回撥函式之間的間隔時間(以秒為單位)。可以是浮點數。
  • $callback:回撥函式,每當間隔到達時會被呼叫。回撥函式應該接受一個引數 $watcher,它是當前正在執行的週期觀察者(EvPeriodic物件)。
  • $data (可選):傳遞給回撥函式的額外資料。如果指定了該引數,它將作為回撥函式的第二個引數。
  • $priority (可選):指定回撥函式的優先順序。較高的數值表示較高的優先順序,可以是正或負整數。

返回值:返回一個 EvPeriodic 物件(週期觀察者),可以用於對觀察者進行操作和管理。

示例:

$loop = new EvLoop();

$counter = 0;

$periodic = $loop->periodic(1, 2, function ($watcher) use(&$counter) {
    echo 'Iteration: ' . $counter . PHP_EOL;
    $counter++;
    
    if ($counter >= 5) {
        $watcher->stop(); // 停止週期呼叫
        echo 'Periodic watcher stopped.' . PHP_EOL;
    }
});

$loop->run();

以上示例中,我們建立了一個 EvLoop 物件,並在每隔2秒呼叫一次回撥函式。回撥函式的作用是列印當前的迭代次數。在這個例子中,我們設定 $offset 為 1 表示延遲1秒後第一次呼叫回撥函式。當迭代次數到達5次時,我們使用 stop() 方法停止了週期呼叫,並輸出了一條資訊表示週期觀察者已經停止。

注意:在實際使用時,你可能需要根據具體需求調整時間間隔和回撥函式的邏輯。

補充糾錯
上一個函式: EvLoop::nowUpdate()函式
下一個函式: EvLoop::prepare()函式
熱門PHP函式
分享連結