在Flutter中,await会阻塞下方代码的执行,await修饰的方法需要先拿到返回值,然后执行下方代码
void _test() async {
print('----------开始-------------');
await _wait();
print('-----等待方法的下一行--------');
}
Future _wait() {
print('----------方法执行中-------------');
return Future.delayed(const Duration(seconds: 1));
}
执行顺序如下:
I/flutter (22666): ----------开始-------------
I/flutter (22666): ----------方法执行中-------------
I/flutter (22666): -----等待方法的下一行--------
加入延时任务后
void _test() async {
print('----------开始-------------');
await _wait();
print('-----等待方法的下一行--------');
}
Future _wait() {
print('----------方法执行中-------------');
return Future.delayed(const Duration(seconds: 1), () {
print('----------延迟1秒-------------');
});
}
执行顺序如下:
I/flutter (22666): ----------开始-------------
I/flutter (22666): ----------方法执行中-------------
I/flutter (22666): ----------延迟1秒-------------
I/flutter (22666): -----等待方法的下一行--------
可以看到,await会强行阻塞当前方法,并在异步任务执行完成后才会执行后面的代码。