【发布时间】:2019-04-14 10:44:49
【问题描述】:
基于 Dart 官方页面 使用Async/Wait时:
当应用看到async这个词时,它会正常同步执行函数,直到它看到await或return
请注意,异步函数会立即开始执行 (同步)。该函数暂停执行并返回一个 未完成的未来,当它到达任何一个的第一次出现时 以下:
- 函数的第一个等待表达式(在函数获取 该表达式未完成的未来)。
- 函数中的任何返回语句。
- 函数体结束。
当它看到它们中的任何一个时,它会返回一个未完成的Future 并停止执行async 函数,直到它执行所有其他函数,当所有其他函数都执行时,应用程序会返回到async 函数并执行其中的内容。
但是当我测试时,我尝试在返回未来结果之前添加 print 语句,如您在下面的代码中所见,但结果与网站中所述的不同,正如它所说应用程序在看到单词 await 时停止执行,但语句:"Async - Hi Called 1st" 已打印,正如您在执行其他函数之前所看到的那样。 p>
import 'dart:async';
Future<void> print1stAsync() async {
var test = await callAsync();
print(test);
}
main() {
print1stAsync();
print2nd();
print3rd();
print4th();
}
print2nd() {
print('Called 2nd');
}
print3rd() {
print("Called 3rd");
}
print4th() {
print('Called 4th');
}
Future<String> callAsync() {
print("Async - Hi Called 1st");
return Future(() => "Async - Called 1st ");
}
输出:
Async - Hi Called 1st
Called 2nd
Called 3rd
Called 4th
Async - Called 1st
那么为什么会这样呢?我错过了什么吗?
【问题讨论】:
标签: asynchronous dart async-await flutter