【发布时间】:2019-02-11 14:57:00
【问题描述】:
实际上在 Dart 中,为了在函数体中使用await,需要将整个函数声明为async:
import "dart:async";
void main() async {
var x = await funcTwo();
print(x);
}
funcTwo() async {
return 42;
}
如果不将main() 标记为async,此代码将无法工作
Error: Unexpected token 'await'.
但是,文档说“await 表达式计算 e,然后暂停当前正在运行的函数,直到结果准备好——也就是说,直到 Future 完成”(@987654321 @)
所以,也许我错过了什么,但没有必要强制函数异步?强制执行异步声明的理由是什么?
【问题讨论】:
-
大多数采用
async和await的语言都选择了相同的设计:C#、Python、JavaScript、Dart等。他们选择它的原因也一样;请参阅here 了解早期的替代方案集合以及为什么没有选择它们。您的特定问题在Inferring “async”部分下。
标签: asynchronous dart language-design