飞镖程序何时完成执行?



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

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

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

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

最新更新