如何在Dart中模拟长时间的过程(睡眠)?

时间:2015-04-15 11:52:06

标签: dart dart-async

我想停止/睡眠执行以模拟长时间的过程,遗憾的是我无法找到有关它的信息。我已经阅读了以下主题(How can I "sleep" a Dart program),但这不是我想要的。

例如,来自sleep()个软件包的dart:io函数不适用,因为此软件包在浏览器中不可用。

例如:

import 'dart:html';
main() {
  // I want to "sleep"/hang executing during several seconds
  // and only then run the rest of function's body
  querySelect('#loading').remove();
  ...other functions and actions...
}

我知道有一段Timer类可以在一段时间后进行回调,但它仍然无法阻止整个程序的执行。

2 个答案:

答案 0 :(得分:3)

无法停止执行。您可以使用Timer或Future.delayed,也可以只使用无限循环,该循环仅在经过一段时间后结束。

答案 1 :(得分:1)

如果你想要停止世界睡眠功能,你可以完全自己做。我会提到我不建议你这样做,阻止这个世界是个坏主意,但如果你真的想要它:

void sleep(Duration duration) {
  var ms = duration.inMilliseconds;
  var start = new DateTime.now().millisecondsSinceEpoch;
  while (true) {
    var current = new DateTime.now().millisecondsSinceEpoch;
    if (current - start >= ms) {
      break;
    }
  }
}

void main() {
  print("Begin.");
  sleep(new Duration(seconds: 2));
  print("End.");
}