一尘不染

如何在Dart中运行重复功能?

Dart

我想一遍又一遍地运行一个函数,之间要有一个延迟。如何使用Dart做到这一点?


阅读 490

收藏
2020-08-31

共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是将来运行功能的唯一方法。

2020-08-31