flutter

这篇文章主要探讨了 Flutter/Dart 的异步机制,包括事件循环的原理、微任务与事件的区别、Future 的本质和使用,通过多种底层代码示例揭示异步机制的套路,如在不同事件中的应用。还重新认识了事件循环,指出处理事件中调度的微任务会在本次调用最后运行。最后作者分享写作目的并欢迎交流讨论。

关联问题:Dart异步如何优化Future回调怎么用Isolate通信怎实现

前言

在我的上一篇文章《深入理解Flutter/Dart事件机制》里介绍了Flutter/Dart事件机制的底层原理,相信大家读完以后会对Flutter/Dart事件机制有一个比较深入的了解。这篇文章呢,就是在前一篇文章的基础之上,跟大家一起对Dart异步机制的本质做一些探讨。

再谈事件循环

首先呢,还是上这张已经包浆的事件循环示意图: 

这张图是对事件循环模型的一个抽象,在另一篇文章《Flutter/Dart中的异步》里我曾经对这张图片做了一些介绍,我们都知道循环里存在两个队列,循环的过程是程序开始先执行main函数,main函数执行完毕以后,清空微任务队列,然后再处理一个event。如此循环直到程序退出。

那么事件队列里面放着什么?微任务队列里面又放着什么呢?我们之前的了解可能会说事件队列里放着外部事件,例如定时器事件,IO事件等等,微任务队列放着微任务,调用scheduleMicrotask函数就可以给微任务队列添加微任务。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 转至元数据结尾创建: 董潇伟,最新修改于: 十二月 23, 2016 转至元数据起始第一章:isa和Class一....
    40c0490e5268阅读 5,860评论 0 9
  • Mode================SqlData.h. 首先 添加头文件#import { sqlite3 ...
    代码搬运包工头阅读 1,196评论 0 0
  • 【2017年最新】☞ iOS面试题及答案 设计模式是什么? 你知道哪些设计模式,并简要叙述? 设计模式是一种编码经...
    紫色冰雨阅读 3,790评论 0 1
  • 1、设置UILabel行间距 NSMutableAttributedString*attrString=[[NSM...
    iOS祎阅读 6,625评论 0 0
  • (1)NSManagedObjectContext(被管理的数据上下文) 操作实际内容(操作持久层) 作用:插入数...
    lilinjianshu阅读 1,696评论 0 0