flutter - Future,microtask事件队列顺序

两道题助你熟记

收藏保存文章,熟记flutter 事件执行机制. 在线运行


void main() async {
  print("A");
  Future.delayed(Duration(milliseconds: 1), () {
    print("B");
  });
  print("C");
  await Future((){
    print("D");
    Future(()=>print("E"));
    Future.microtask(()=>print("F"));
    Future(()=>print("G"));
  });
}

答案:

A
C
B
D
F
E
G

dart线程优先级

dart 中的代码执行优先级可以分为三个级别:

  1. 在 Main 中写代码将最先执行;
  2. 执行完 Main 中的代码,然后会检查并执行 Microtask Queue 中的任务,
    通常使用 scheduleMicrotask 将事件添加到 MicroTask Queue 中;
  3. 最后执行 EventQueue 队列中的代码,通常使用 Future 向 EventQueue加入时间,也可以使用 async 和 await 向 EventQueue 加入事件。

总结:Dart 中事件的执行顺序:Main > MicroTask > EventQueue。

dart中执行异步操作

dart中执行异步操作通过Future,多个 Future 的执行顺序.

  • 规则一:Future 的执行顺序为Future的在 EventQueue 的排列顺序,先进先执行。
  • 规则二:当任务需要延迟执行时,可以使用 new Future.delay() 来将任务延迟执行。
  • 规则三: Future 如果执行完才添加 than ,该任务会被放入 microTask,当前 Future 执行完会执行 microTask,microTask 为空后才会执行下一个Future。
  • 规则四:Future 是链式调用,意味着Future 的 then 未执行完,下一个then 不会执行。

练习

在这里插入图片描述


----- 如果文章对你有用,感谢右上角 >>>点赞 | 收藏 <<<

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值