showAsync() {
print('Async Function Call!!');
}
show() async {
await showAsync();
print('all done!!');
}
showSync() {
print('Sync Function Call!');
}
main(List<String> args) {
show();
showSync();
}
输出:
Async Function Call!!
Sync Function Call!
all done!!
答案 0 :(得分:2)
showAsync
函数没有执行任何需要等待的操作,因此仅执行。如果更改为以下内容,将首先打印其他功能:
showAsync() {
Future.delayed(Duration(seconds: 1), () {
print('Async Function Call!!');
});
}
正如Günter在评论中指出的那样:“ 在Dart 1.x中,异步函数会立即暂停执行。在Dart 2中,异步函数会立即同步执行,直到第一次等待或返回为止,而不是立即挂起。”(Dart文档中的引号)。
因此,如果您添加第二个await showAsync()
,它将不会在同步调用之前执行。
可在此处获得详细说明:https://www.dartlang.org/tutorials/language/futures