代码如下:
void main(List<String> arguments) {
print('start');
var future = Future(() {
print('future默认');
});
future.then((value) => print('future默认执行完成'));
var future1 = Future.value(11);
future1.then((value) => print('value执行完成'));
Future.microtask(() => print('microtask执行完成'));
print('end');
}
运行结果:
start
end
value执行完成
microtask执行完成
future默认
future默认执行完成
解释:
Dart 里面分两种队列 :
事件队列(event queue);
微任务队列(microtask queue);
微任务队列的优先级最高,高于事件队列,只要队列中还有任务,就可以一直霸占着事件循环。
开始
|
检查微任务队列,有任务执行,执行完成后回到开始步骤;
没任务,向下执行
|
检查事件队列,有任务执行,执行完成后回到开始步骤;
|
结束
网友评论