2014-11-21 151 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