一、Dart的事件循环
Dart的事件循环机制相当于Android中的handler机制,Android中是多线程了,但是dart是单线程的,更像js中的事件循环机制,虽然是单线程的,但是dart也提供了异步的功能函数对象Future,类似于js的compose函数。Dart的事件有两个队列。一个是微任务队列。如下图:
- 事件队列:包含外部事件,例如I/O, Timer,绘制事件等等。
- 微任务队列:则包含有Dart内部的微任务,主要是通过scheduleMicrotask来调度。
两种队列的规则如下图:

执行规则如下:
- 首先处理所有微任务队列里的微任务。
- 处理完所有微任务以后,从事件队列里取1个事件进行处理。
- 回到微任务队列继续循环。
二、如何实现异步
那么在Dart中如何让你的代码异步执行呢?很简单,把要异步执行的代码放在微任务队列或者事件队列里就行了。
- 可以调用Timer.run来让代码以Event的方式异步执行。
- 可以调用scheduleMicrotask来让代码以微任务的方式异步执行。
总结:对微任务队列是一次性全部处理,对于事件队列是一次只处理一个,首先处理的是所有的微任务,不管微任务有多少都优先处理,处理完毕在处理其他事件。

最低0.47元/天 解锁文章
703

被折叠的 条评论
为什么被折叠?



