Flutter的异步回调

一、Dart的事件循环

        Dart的事件循环机制相当于Android中的handler机制,Android中是多线程了,但是dart是单线程的,更像js中的事件循环机制,虽然是单线程的,但是dart也提供了异步的功能函数对象Future,类似于js的compose函数。Dart的事件有两个队列。一个是微任务队列。如下图:

  • 事件队列:包含外部事件,例如I/O, Timer,绘制事件等等。
  • 微任务队列:则包含有Dart内部的微任务,主要是通过scheduleMicrotask来调度。

两种队列的规则如下图:

执行规则如下:

  1. 首先处理所有微任务队列里的微任务。
  2. 处理完所有微任务以后,从事件队列里取1个事件进行处理。
  3. 回到微任务队列继续循环。

二、如何实现异步

        那么在Dart中如何让你的代码异步执行呢?很简单,把要异步执行的代码放在微任务队列或者事件队列里就行了。

  • 可以调用Timer.run来让代码以Event的方式异步执行。
  • 可以调用scheduleMicrotask来让代码以微任务的方式异步执行。

        总结:对微任务队列是一次性全部处理,对于事件队列是一次只处理一个,首先处理的是所有的微任务,不管微任务有多少都优先处理,处理完毕在处理其他事件。

三、异步的实现Fu

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值