试图找到一种处理嵌套异步函数的好方法,我正在使用dartpad进行一些测试。在以下示例中,我不理解为什么为什么打印_Future而不是值(level1String)?
输出为:
托托
在等待2级之前
持续时间之前
持续时间后
13
2级以后
'_Future'的实例// // 我的关注在这里,因为打印了“ level 2之后”,我应该已经到达return语句
1级以后
是的!
import 'dart:convert';
import "dart:async";
import "dart:html";
void main() async {
print('toto');
await print(level1String());
print('after level 1');
}
Future<String> level1String () async {
print('before await level2');
print(level2String());
print('after level 2');
return 'level1String';
}
int level2String () {
print('before duration');
Timer(Duration(seconds: 3), () {
print('yeah!');
});
print('after duration');
return 13;
}
答案 0 :(得分:1)
await print(level1String());
应该是
print(await level1String());
level1String()
返回您需要等待的Future
,而不是print()