How to use setInterval/setTimeout in Dart SDK 0.4+ How to use setInterval/setTimeout in Dart SDK 0.4+ dart dart

How to use setInterval/setTimeout in Dart SDK 0.4+


In addition to Timer mentioned by Chris, there is a Future-based API:

var future = new Future.delayed(const Duration(milliseconds: 10), doStuffCallback);

There is not yet direct support for cancelling a Future callback, but this works pretty well:

var future = new Future.delayed(const Duration(milliseconds: 10));var subscription = future.asStream().listen(doStuffCallback);// ...subscription.cancel();

Hopefully, there will soon be a Stream version of Timer.repeating as well.


From this post on the group (Feb 14th 2013).

// Old Versionwindow.setTimeout(() { doStuff(); }, 0);// New Versionimport 'dart:async';Timer.run(doStuffCallback);

And another example (copied from the same post)

// Old version: var id = window.setTimeout(doStuffCallback, 10);.... some time later....window.clearTimeout(id);id = window.setInterval(doStuffCallback, 1000);window.clearInterval(id);// New version:var timer = new Timer(const Duration(milliseconds: 10), doStuffCallback);... some time later ---timer.cancel();timer = new Timer.repeating(const Duration(seconds: 1), doStuffCallback);timer.cancel();

Specifically, they are now part of the Timer class in the dart:async library (rather than WorkerContext, which seems to be IndexedDb specific). API docs here


You can use:

1) SetInterval

_timer = new Timer.periodic(const Duration(seconds: 2), functionBack);Where: `functionBack(Timer timer) {  print('again');}

2) SetTimeOut

_timer = Timer(Duration(seconds: 5), () => print('done'));Where _time is type Time