async、await的基本用法
关键字async
和await
是Dart语言异步支持的一部分。
async
:用来表示函数是异步的,定义的函数会返回一个 Future 对象。await
:后面跟着一个 Future,表示等待该异步任务完成后才会继续往下执行。await
只能出现在异步函数
内部,能够让我们可以像写同步代码那样来执行异步任务而不使用回调的方式。
await
关键字使用必须满足两个条件:
- 当前函数必须是
异步函数
(即在函数头中包含关键字async
的函数);await
修饰的任务必须是异步任务
String _data = '0';
void main() {
getData2();
print('4-做其他事');
}
void getData2() async {
print('1-开始data=$_data');
// 1.后面的操作必须是异步才能用await
// 2。当前函数必须是异步函数
await Future(() {
for (int i = 0; i < 100000000; i++) {
_data = '网络数据';
}
print('2-结束data=$_data');
});
print('3-结束data=$_data');
}
运行结果:
flutter: 1-开始data=0
flutter: 4-做其他事
flutter: 2-结束data=网络数据
flutter: 3-结束data=网络数据
复制代码
- getData2()被
async
关键词修饰,变为异步函数。 所以任务4
先执行. 任务2
被await
关键词修饰,等待该异步任务完成后才会继续往下执行任务3
。