Flutter 中对于async ,await,future的简单理解

1,623 阅读1分钟
  • 1.由async修饰的方法(代码块),系统默认返回一个future实例
  • 2.await必须用在async修饰的方法中
  • 3.await的效果如他的名字一样,会暂停async修饰的方法内部await修饰语句后面的代码,其实是生成了一个future,可以理解为每个await都会生成一个future
  • 4.future或async await,都是将它修饰的事件放入到系统的event队列中,在未来的不确定时间执行。
  • 为了方便理解,举个例子
testA() async {
    print("start");
    await testB();
    print("over");
}

testB() async{
    print("B");
}

上面代码的输出结果是 start, B, over。await将代码分成了两块,方法testA中的代码等同于下面代码

testA() async{

  Future((){
    print("start");
    testB();
  }).then((_){
    print("over");
  });

}

改动一下上面的testB代码

testB() async{

  Future((){
    print("B");
  });

}

此时输出的结果是start,over,B。因为B的输出被放到event队列中等待事件循环获取它并执行。 如果想不去掉testB中的Future的前提下还让over最后输出应该向下边这样改

testB() async{
  //此处添加await
  await Future((){
    print("B");
  });

}

这样它的输出又变成了start, B, over。