Dart的事件循环遵循以下规则:
- 先处理所有微任务队列的微任务
- 再处理事件队列里事件
dart-微任务.png
Future Api
//同步操作
await Future.sync(() {
Timer(Duration(seconds: 3), () {
print('sync delay 3');
});
});
//等同 Future.sync(() => [])
await Future.value([
await Future.delayed(Duration(seconds: 1), () {
print('delay 1...');
})
]);
//微任务,间接调用scheduleMicrotask
await Future.microtask(() {});
//等同于 Timer.run(() {});
await Future(() {});
//返回的最先返回的Future,其他丢弃
await Future.any([]);
//微任务
scheduleMicrotask(() {});
Timer Api
//等同于 new Timer(Duration.zero, (){})
Timer.run(() {});
//打卡器 - 每隔1秒执行次
Timer.periodic(Duration(seconds:1), (timer) {});
//倒计时
Timer(Duration(seconds: 3), () {});
网友评论