【问题标题】:When does a dart program finishes executing?飞镖程序何时完成执行?
【发布时间】:2019-11-24 16:43:00
【问题描述】:

有人可以解释为什么下面的程序在执行最后一条语句后没有退出,即 print(....) 但它一直运行到 Future 完成?

void main() {
  Future.delayed(
    const Duration(seconds: 3),
    () => 100,
  );
  print('Waiting for a value...');
}

【问题讨论】:

  • 如果你想立即退出,你应该使用:exit

标签: dart


【解决方案1】:

Dart 确实有一个事件队列,因此 Dart 虚拟机仅在主循环完成、事件队列为空且所有计时器都已执行时才会停止。由于Future.delayed 产生了一个内部计时器,Dart VM 将在 Dart VM 停止之前等待计时器执行完毕。

计时器最终在事件队列上生成一个新任务,该任务尝试获取未来的结果。但由于没有人等待该结果,Dart VM 将在此之后停止。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多