美文网首页
第十章:Fultter之Future

第十章:Fultter之Future

作者: Mr姜饼 | 来源:发表于2021-05-19 17:23 被阅读0次
void main(){
  test1();
  print('5555');
}
void test1(){
  print('1111');
  Future((){
    print('2222');
  });
  Future((){
    print('3333');
  });
  print('4444');
}

输出结果

flutter: 1111
flutter: 4444
flutter: 5555
flutter: 2222
flutter: 3333

分析:Flutter属于单线程,先执行完主线程,再执行Future里面的事件

void main(){
  test1();
  print('5555');
}
void test1(){
  print('1111');
  Future((){
    print('2222');
  }).then((value){
    print('6666');
  });
  Future((){
    print('3333');
  }).then((value){
    print('7777');
  });
  Future((){
    print('8888');
  }).then((value){
    print('9999');
  });
  print('4444');
}

输出结果

flutter: 1111
flutter: 4444
flutter: 5555
flutter: 2222
flutter: 6666
flutter: 3333
flutter: 7777
flutter: 8888
flutter: 9999

执行一组异步操作

//执行一组异步操作
void testFuture3() {
  Future.wait([
  Future((){
    return'任务1';
  }),
  Future((){
    return'任务2';
  })
  ]).then((value){
    print(value[0]);
  });

}

异步任务之前存在依赖关系

void testFuture2() {
  //异步任务之前存在依赖关系
  Future((){
    print('任务1结束');
  }).then((value){
    return '任务3';
  }).then((value){
    return '任务4';
  }).then((value){
    return '任务2';
  });

}

微任务队列优先级高于Future事件队列

void testFuture4() {
  print('任务开始');
  Future((){
    print('任务1');
  }).then((value) => print(value));
  Future((){
    print('任务2');
  });
  //微任务队列优先级高于Future事件队列
  scheduleMicrotask((){
    print('任务3');
  });
  print('任务结束');
}

.then相当于微任务,优先级差不多,所以在执行完Future必定接着执行.then

相关文章

网友评论

      本文标题:第十章:Fultter之Future

      本文链接:https://www.haomeiwen.com/subject/iegpjltx.html