【发布时间】:2021-11-28 15:21:28
【问题描述】:
在 Dart DOC 网站上,我看到了这个异步示例,
Future<void> printOrderMessage() async {
print('Awaiting user order...');
var order = await fetchUserOrder();
print('Your order is: $order');
}
Future<String> fetchUserOrder() {
return Future.delayed(const Duration(seconds: 4), () => 'Large Latte');
}
Future<void> main() async {
countSeconds(4);
await printOrderMessage();
}
void countSeconds(int s) {
for (var i = 1; i <= s; i++) {
Future.delayed(Duration(seconds: i), () => print(i));
}
}
// output
Awaiting user order...
1 // after 1 second
2 // after 2 second
3 //after 3 second
4 // after 4 second
Your order is: Large Latte // after 4 second
在我通过将 printOrderMessage() 和 main() 的返回类型转换为 void 来更改代码之后 并去掉 main() 的 async 和 await ,输出相同的结果
printOrderMessage() async {
print('Awaiting user order...');
var order = await fetchUserOrder();
print('Your order is: $order');
}
Future<String> fetchUserOrder() {
return Future.delayed(const Duration(seconds: 4), () => 'Large Latte');
}
main() {
countSeconds(4);
printOrderMessage();
}
void countSeconds(int s) {
for (var i = 1; i <= s; i++) {
Future.delayed(Duration(seconds: i), () => print(i));
}
}
// 输出
Awaiting user order...
1 // after 1 second
2 // after 2 second
3 //after 3 second
4 // after 4 second
Your order is: Large Latte // after 4 second
如果显示相同的结果,为什么我们需要在 main() 中同步和等待并返回 Future 类型?
【问题讨论】:
标签: dart asynchronous future