Подтвердить что ты не робот

Как запустить функцию reoccurring в Dart?

Я хотел бы запускать функцию снова и снова, с задержкой между ними. Как я могу сделать это с помощью Dart?

4b9b3361

Ответ 1

Вы можете использовать класс Timer для планирования однократных и повторяющихся функций.

Повторяя

Вот как вы запускаете повторяющуюся функцию:

import 'dart:async';
main() {
  const oneSec = const Duration(seconds:1);
  new Timer.periodic(oneSec, (Timer t) => print('hi!'));
}

Таймер принимает два аргумента, продолжительность и функцию для запуска. Продолжительность должна быть экземпляром Duration. Обратный вызов должен принимать один параметр, сам таймер.

Отмена повторного таймера

Используйте timer.cancel() для отмены повторного таймера. Это одна из причин, по которой таймер передается на вызов обратного вызова из повторяющегося таймера.

Один выстрел после задержки

Чтобы запланировать однократную функцию после задержки (выполнить один раз, некоторое время в будущем):

import 'dart:async';
main() {
  const twentyMillis = const Duration(milliseconds:20);
  new Timer(twentyMillis, () => print('hi!'));
}

Обратите внимание, что обратный вызов для таймера с одним выстрелом не принимает параметр.

Один выстрел как можно скорее

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

import 'dart:async';
main() {
  Timer.run(() => print('hi!'));
}

В HTML

Таймеры даже работают в HTML. Фактически, window.setTimeout был удален, поэтому Timer - единственный способ запустить функцию в будущем.

Ответ 2

Вы также можете использовать Future.delayed и ждать задержки выполнения:

Future<Null> delay(int milliseconds) {
  return new Future.delayed(new Duration(milliseconds: milliseconds));
}


main() async {
  await delay(500);
  print('Delayed 500 milliseconds');
}