blog icon indicating copy to clipboard operation
blog copied to clipboard

Dart 的 Timer

Open huruji opened this issue 5 years ago • 0 comments

Timer 属于 Dart 异步编程的一部分,通过 Timer 可以创建执行定时器(包括重复执行的)。

主要包含 TimerTimer.periodic 两个构造函数:

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

分别对应 javascript 的 setTimeoutsetInterval

如 3 秒之后打印:

  const timeout = Duration(seconds: 3);

  Timer(timeout, () {
    print('huruji');
  });

1 秒重复打印:

Timer.periodic(Duration(seconds: 1), (Timer timer) {
    print('xie');
  });

需要取消定时器,可以使用实例方法 .cancel

  int count = 0;

  Timer myTimer;
  myTimer = Timer.periodic(Duration(seconds: 1), (Timer timer) {
    print('xie');
    if (count == 10) {
      myTimer.cancel();
    }
    count++;
  });

Dart 和 js 一样都是单线程,所以为了能够让定时器尽快的调用,可以使用静态方法 run

Timer.run(callback)

这类似于将 setTimeout 的时间设置为 0

setTimeout(() => {}, 0)

huruji avatar Sep 21 '19 13:09 huruji