我们首先我来看一张dart的程序启动执行顺序图
从图中我们可以看见当一个dart程序被启动后首先会执行main方法然后会执行eventloop机制,evenloop机制会不停的检查microqueue队列和eventqueue队列,直到我们退出程序。
那么什么是eventloop机制呢?当一个程序被启动后如果没有eventloop循环机制难道程序执行完了就直接退出程序吗?所以event loop 会保活我们的程序并且不停的监听新的任务,例如某一个按钮被点击了又或者是一个文本的输入操作再或者是一个请求等待。
dart的 event loop机制会又两个任务队列及microtaskqueue和eventqueue队列。
1.eventqueue.包含所有外来的事件:I/O,mouse events,drawing events,timers,isolate之间的message等。
Future(() => print('future task'));
Future.delayed(Duration(seconds: 1), () {
print('future task seconds 1');
});
2.microtaskqueue,这个队列我们在实战中很少用,也不推荐用,如果你往里面添加任务会影响dart的正常工作,因为dart程序自身的很多任务都是建立在eventqueue里的,如果你不小心阻塞了他会加班的。。。。
Future.microtask(() =>