2014-11-21 146 views
4

我正在将一些JavaScript移植到Dart。我的代码使用window.setTimeout在一段时间后运行回调。在某些情况下,该回调将通过window.clearTimeout取消。如何在Dart中执行相当于setTimeout + clearTimeout的功能?

Dart的这个相当于什么?我可以使用new Future.delayed来代替setTimeout,但我看不到取消此方法的方法。我也找不到Dart的clearTimeout

回答

7

可以使用Timer class

var timer = new Timer(new Duration(seconds: 1),() => print('done')); 

timer.cancel(); 
+0

酷;会尝试这个。 'Timer'只是一个'Future'的包装,它在取消时内部设置了'bool'? – 2014-11-21 14:17:12

+1

据我所知这不是它是如何。 'Future.delayed'使用'Timer',否则我认为它们不相关(不确定)。 – 2014-11-21 14:18:16

+2

是的使用时间可以取消的东西。 Future.delayed在后台使用Timer,反之亦然。你可以在这里看到实现:https://code.google.com/p/dart/source/browse/branches/bleeding_edge/dart/sdk/lib/async/future.dart#224 – 2014-11-21 14:21:47