两道题助你熟记
收藏保存文章,熟记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 中的代码执行优先级可以分为三个级别:
- 在 Main 中写代码将最先执行;
- 执行完 Main 中的代码,然后会检查并执行 Microtask Queue 中的任务,
通常使用 scheduleMicrotask 将事件添加到 MicroTask Queue 中; - 最后执行 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 不会执行。
练习
----- 如果文章对你有用,感谢右上角 >>>点赞 | 收藏 <<<