Spec-Zone.ru › Dart 2

dart:async

Конструктор Timer.periodic

Timer.periodic(
  1. Duration duration,
  2. void callback(
    1. Timer timer
    )
)

Создаёт новый повторяющийся таймер.

Функция callback вызывается повторно с duration интервалами до отмены с помощью функции cancel.

Точное время зависит от реализации базового таймера. Не более n обращений к функциям произойдёт за duration * n время, но время между двумя последовательными вызовами может быть как короче, так и длиннее duration.

В частности, реализация может запланировать следующий вызов, например, duration после окончания, начала или планирования предыдущего вызова – даже если фактический вызов был задержан.

duration должно быть ненулевым положительным значением Duration.

Пример:

var counter = 3;
Timer.periodic(const Duration(seconds: 2), (timer) {
  print(timer.tick);
  counter--;
  if (counter == 0) {
    print('Cancel timer');
    timer.cancel();
  }
});
// Outputs:
// 1
// 2
// 3
// "Cancel timer"

Реализация

factory Timer.periodic(Duration duration, void callback(Timer timer)) {
  if (Zone.current == Zone.root) {
    // No need to bind the callback. We know that the root's timer will
    // be invoked in the root zone.
    return Zone.current.createPeriodicTimer(duration, callback);
  }
  var boundCallback = Zone.current.bindUnaryCallbackGuarded<Timer>(callback);
  return Zone.current.createPeriodicTimer(duration, boundCallback);
}

© 2012 the Dart project authors
Licensed under the BSD 3-Clause "New" or "Revised" License.
https://api.dart.dev/stable/2.18.5/dart-async/Timer/Timer.periodic.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API