我意识到在当前的 Dart SDK 版本 0.4.1.0_r19425 中,诸如setTimeout
, setInterval
,之类的方法不再是类的一部分,clearTimeout
它们都移到了.
现在有没有关于如何使用它们的文档?每次我想使用它们时都需要创建一个新实例吗?clearInterval
Window
WorkerContext
WorkerContext
问问题
40304 次
3 回答
63
除了 Chris 提到的 Timer 之外,还有一个基于 Future 的API:
var future = new Future.delayed(const Duration(milliseconds: 10), doStuffCallback);
目前还没有直接支持取消 Future 回调,但这很好用:
var future = new Future.delayed(const Duration(milliseconds: 10));
var subscription = future.asStream().listen(doStuffCallback);
// ...
subscription.cancel();
希望很快就会有Timer.repeating 的 Stream 版本。
于 2013-03-08T16:29:44.747 回答
18
您可以使用:
1) 设置间隔
_timer = new Timer.periodic(const Duration(seconds: 2), functionBack);
Where: `functionBack(Timer timer) {
print('again');
}
2) 设置超时
_timer = Timer(Duration(seconds: 5), () => print('done'));
Where _time is type Time
于 2020-04-12T13:37:46.463 回答
13
来自小组的这篇文章(2013 年 2 月 14 日)。
// Old Version
window.setTimeout(() { doStuff(); }, 0);
// New Version
import 'dart:async';
Timer.run(doStuffCallback);
另一个例子(从同一个帖子复制)
// 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();
具体来说,它们现在是库中Timer
类的一部分dart:async
(而不是WorkerContext
似乎是 IndexedDb 特定的)。 API文档在这里
于 2013-03-08T14:34:31.207 回答