flutter异步(一)

34 阅读2分钟

flutter中的异步

什么是任务

任务:完成一项需求的基本单位
任务生命周期:任务从开始到完成的时间跨度

任务的状态

未完成
成功完成
异常结束

时刻与时间线

机体:任务分发者或处理者
时刻:机体运行中的某一瞬间
时间线:所有时刻构成的连续有向轴线

同步与异步

同步:机体在时间线上,将任务按顺序依次分发
异步:机体在时间线上,在一个任务未完成时,分发另一任务

异步任务特点

对于单一机体来说,任务生命期间需要机体亲自参与,是无法异步处理的,像一些只需要分发任务,任务的具体执行逻辑由其他机体完成的任务,适合异步处理来避免等待。
最典型的任务就是网络io磁盘任务

异步任务完成与回调

异步任务一旦分发完成,机体并不会等待任务完成,而是继续分发其他任务,因此需要回调函数告知机体任务完成情况。
回调任务在生命周期中向机体提供通知的方式。

异步模型的延伸

单线程异步模型的局限性

单线程的异步是有局限性的,机体始终只能参加一个任务,而无法同时参加多个任务,一旦出现多个需要机体亲自参与的大型任务则无法完成异步,这就是单线程异步模型的局限性。

多线程与异步的关系

既然一个机体无法同时参与多个任务,那么可以多增加几个机体,通过多线程的方式使得多个任务并行执行,本质上多线程也是异步的一种实现方式而已。

Flutter中对局限性的处理

由于flutter只专注于完成页面渲染的前段工作,因此大部分的任务都交给后端的服务器去操作,flutter只负责分发任务和接受任务并不需要亲自参与到任务的执行中去,即请求和响应模式,因此单线程下的异步就已经能够满足大部分的情况了。