我正在将一些JavaScript代码移植到Dart。 我有一个使用window.setTimeout
在一段时间后运行回调的代码。 在某些情况下,通过window.clearTimeout
取消该回调。
在Dart中相当于什么呢?我可以使用new Future.delayed
来替换setTimeout
,但是我找不到取消此操作的方法。 也没有找到一种从Dart调用clearTimeout
的方式。
我正在将一些JavaScript代码移植到Dart。 我有一个使用window.setTimeout
在一段时间后运行回调的代码。 在某些情况下,通过window.clearTimeout
取消该回调。
在Dart中相当于什么呢?我可以使用new Future.delayed
来替换setTimeout
,但是我找不到取消此操作的方法。 也没有找到一种从Dart调用clearTimeout
的方式。
import 'dart:async';
var timer = Timer(Duration(seconds: 1), () => print('done'));
timer.cancel();
如果您想模仿JavaScript API:
import 'dart:async';
Timer setTimeout(callback, [int duration = 1000]) {
return Timer(Duration(milliseconds: duration), callback);
}
void clearTimeout(Timer t) {
t.cancel();
}
Timer
只是一个围绕着Future
的包装器,当被取消时内部设置一个bool
吗? - Danny TuppenyFuture.delayed
使用了一个Timer
,但除此之外,我认为它们没有关联(不过我不确定)。 - Günter ZöchbauerFuture.delayed
工厂的链接在这里:https://github.com/dart-lang/sdk/blob/master/sdk/lib/async/future.dart - Vince Varga