flutter

Future 执行优先级问题

2022-03-02  本文已影响0人  卢融霜

代码如下:

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);
微任务队列的优先级最高,高于事件队列,只要队列中还有任务,就可以一直霸占着事件循环。

   开始
    |
检查微任务队列,有任务执行,执行完成后回到开始步骤;
没任务,向下执行
    |
检查事件队列,有任务执行,执行完成后回到开始步骤;
    |
   结束

上一篇 下一篇

猜你喜欢

热点阅读