Flutter 异步编程指南
原文中文,约9600字,阅读约需23分钟。发表于: 。Dart 中的方法一旦开始执行就不会被打断,而 event 队列中的事件还来自于用户输入、IO、定时器、绘制等,这意味着在两个队列中都不适合执行计算量过大的任务,才能保证流畅的 UI 绘制和用户事件的快速响应。而且当一个任务的代码发生异常时,只会打断当前任务,后续任务不受影响,程序更不会退出。
Dart中有两个任务队列:microtask队列和event队列。microtask队列处理Dart内部任务,event队列处理Dart内部和外部事件任务。方法执行不会被打断,不适合执行计算量大的任务。异常只会打断当前任务。可以使用scheduleMicrotask或Future.microtask添加任务到microtask队列,使用Future添加任务到event队列。使用Future执行异步任务,使用then注册回调方法。使用async、await编写简洁的异步代码。Flutter中可以使用compute执行耗时任务,使用LoadBalancer创建isolate线程池。使用then链式调用指定任务顺序。使用CancelableOperation取消任务。