You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Dart代码中Future执行输出顺序是否100%固定不会出现反转?

你的理解完全正确,这段代码的输出顺序100%不会反转,规则依据如下:

  • Dart的每个Isolate都是单线程运行,不存在抢占式调度,所有代码的执行顺序完全由事件循环的固定规则决定。
  • 事件循环的执行优先级固定为:先跑完当前正在执行的所有同步代码 → 按顺序清空微任务队列 → 再按顺序处理事件队列中的任务。
  • 你代码中使用的Future(() {})默认构造函数,会直接把传入的函数作为事件添加到事件队列的末尾,不会立刻执行。
  • main函数本身属于当前正在执行的同步任务,所以main函数内的print("Exiting main now")会先同步执行完成,等整个main函数执行结束后,事件循环才会去处理事件队列里的Future任务,所以必然是先打印Exiting main now,再打印Executing Future。

你提到的顺序反转的情况,只有主动修改Future的调度方式才会出现,比如使用Future.microtask()把任务放到微任务队列,或者使用同步的Future.value()之类的构造,你当前写的这段代码输出顺序是完全固定的。

内容的提问来源于stack exchange,提问作者Priyshrm

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 22:24:03