2014-11-21 3 views
4

Я портирую JavaScript на Dart. У меня есть код, который использует window.setTimeout для запуска обратного вызова через определенный промежуток времени. В некоторых ситуациях этот обратный вызов отменяется через window.clearTimeout.Как сделать эквивалент setTimeout + clearTimeout в Dart?

Что эквивалентно этому в Дарте? Я могу использовать new Future.delayed для замены setTimeout, но я не вижу способа отменить это. И я не могу найти, чтобы позвонить clearTimeout из Дарта.

ответ

7

Вы можете использовать Timer class

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

timer.cancel(); 
+0

Круто; попробуем это. Является ли «Таймер» просто оберткой вокруг «Будущего», которая внутренне устанавливает «bool», когда отменяется? –

+1

Насколько я знаю, это не так. 'Future.delayed' использует' Timer', но в остальном я думаю, что они не связаны (не уверен, хотя). –

+2

Да использовать Время для чего-то, что можно отменить. Future.delayed использует таймер в фоновом режиме, а не наоборот. Вы можете увидеть реализацию здесь: https://code.google.com/p/dart/source/browse/branches/bleeding_edge/dart/sdk/lib/async/future.dart#224 –

Смежные вопросы