How to use setInterval/setTimeout in Dart SDK 0.4+

社会主义新天地 提交于 2019-12-03 01:49:52

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.

Chris Buckett

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

// Old Version
window.setTimeout(() { doStuff(); }, 0);

// New Version
import '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

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!