Фабричный конструктор Timer.periodic
Timer.periodic(Создаёт новый повторяющийся таймер.
Функция callback вызывается повторно с duration интервалами до отмены с помощью функции cancel.
Точное время зависит от реализации таймера. Не более n вызовов функции обратного вызова будут сделаны за duration * n времени, но время между двумя последовательными вызовами может быть короче и длиннее duration.
В частности, реализация может запланировать следующий вызов обратного вызова, например, duration после завершения предыдущего вызова, начала предыдущего вызова или планирования предыдущего вызова — даже если фактический вызов был отложен.
Исходный код
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);
}
// TODO(floitsch): the return type should be 'void', and the type
// should be inferred.
var boundCallback = Zone.current
.bindUnaryCallback<dynamic, Timer>(callback, runGuarded: true);
return Zone.current.createPeriodicTimer(duration, boundCallback);
}
© 2012 the Dart project authors
Licensed under the Creative Commons Attribution-ShareAlike License v4.0.
https://api.dartlang.org/stable/1.24.3/dart-async/Timer/Timer.periodic.html