在 Dart 中使用 wait 和 return 是否有区别?

Art*_*rtS 8 asynchronous async-await dart flutter

在我的 flutter 项目中,假设有一个foo(int x) async函数。看起来bar() async像:

Future bar() async {
  return foo(3);
}
Run Code Online (Sandbox Code Playgroud)

bar()函数只是一个foo(int x)带有特定参数的简单胶囊。并bar()用作futurea 中的FutureBuilder

我不确定是否应该await与 return 一起使用。我在网上找不到相关文档。return foo(3)那么和之间有什么区别return await foo(3)?谢谢你!

小智 12

没有任何区别。

从技术上讲,await首先使用可能会在从函数返回之前等待Future解析,但您将无法分辨出区别。

Future无论哪种方式都会返回A。

那里async也没什么用,它可能只是一个箭头:

Future bar() => foo(3);
Run Code Online (Sandbox Code Playgroud)

如果它不是最后一个语句,并且不是 return 语句,这可能很重要,正如评论中指出的那样,请采用以下内容:

Future bar() async {
    try {
        return await foo(3);
    } catch(error) {
        return baz;
    }
}
Run Code Online (Sandbox Code Playgroud)

如果 foo 拒绝,那么它就非常重要,因为它将由被调用者处理,而不是调用者。