颤振异步函数:完成子函数后,返回_Future <string>而不是字符串值

时间:2019-02-27 11:29:25

标签: dart flutter

试图找到一种处理嵌套异步函数的好方法,我正在使用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;
}

1 个答案:

答案 0 :(得分:1)

await print(level1String());

应该是

print(await level1String());

level1String()返回您需要等待的Future,而不是print()