В чем разница между Future.delayed и Timer в флаттере - PullRequest
0 голосов
/ 04 апреля 2020

Мне нравится знать различия между методом Future.delayed и Timer для задержки выполнения кода. Кажется, что оба делают одно и то же.

Future.delayed

Future.delayed(const Duration(milliseconds: 500), () { /*code*/ });

VS

Таймер

Timer _timer = new Timer(const Duration(milliseconds: 500), () { /*code*/ });

Ответы [ 2 ]

1 голос
/ 04 апреля 2020

Пара различий для меня.

  • Future.of возвращает будущее.
  • Timer ничего не возвращает.

Итак если ваш код с задержкой возвращает все, что вам нужно для продолжения работы, Future - это путь к go.


Другое отличие состоит в том, что класс Timer обеспечивает способ многократного срабатывания.

Эта цитата взята из Ссылка на класс таймера самой документации

Таймер обратного отсчета, который можно настроить на срабатывание один раз или многократно

И пример использования Timer с repeat может быть

Timer.periodic(Duration(seconds: 5), (timer) {
    print(DateTime.now()); 
});

Другим частым примером является создание секундомер , чтобы измерить время в вашем коде, его обычно можно увидеть с помощью Timer.

GL !!

0 голосов
/ 06 мая 2020

Таймер:

Timer() создает объект Timer, который выполняет вычисления после задержки. Поскольку вы получаете ссылку на этот Timer объект, вы можете отменить его до его запуска, вызвав cancel.

Timer t = Timer(Duration(seconds: 1), () => print("1 sec later"));
t.cancel(); // nothing will be printed out

Future:

Future.delayed создает Future, который выполняет вычисления после задержки. Внутренне, он все еще использует Timer для этого. Он не предоставляет вам таймер, поэтому вы не можете контролировать или отменять его. С другой стороны, вы можете делать обычные вещи из будущего, например, await.

await Future.delayed(Duration(seconds: 1);
print("1 sec later");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...