- 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。