美文网首页
第十章: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