【问题标题】:Flutter: Difference if using await颤振:使用等待时的区别
【发布时间】:2020-04-15 12:05:44
【问题描述】:

想象一下,在Button 的onPressed 属性内调用_uploadData 的返回类型为Future<void> 的async 函数,UI 不依赖于函数调用。

第一

onPressed: () async {
    await _uploadData();
},

或第二次

onPressed: () {
    _uploadData();
}

这有什么不同吗?如果没有,第一个只是更好的做法吗?

【问题讨论】:

    标签: flutter asynchronous dart async-await


    【解决方案1】:

    是的,这些代码具有不同的行为。如果您使用 async/await 语法,则代码将不会继续,并且会等到未来完成其工作。因此,如果您的 UI 不依赖于 Future,请不要使用 async/await。否则使用它。如果您想了解它,请打开 the dart-pad counter sample 并添加以下代码。

      void _incrementCounter() async{
        await Future.delayed(Duration(seconds: 5));
        setState(() {
          _counter++;
        });
      }
    

    将 _incrementCounter() 方法转换为上述代码。

    【讨论】:

    • 谢谢!现在我真的很清楚了。另一个有趣的事情:将你的代码包装在 incrementCounter 中,循环执行例如5 次,然后在 Future.delayed 前面使用 await 关键字执行代码,然后不执行,这将演示一系列异步调用,您只需确保每个调用都尽可能快地执行,而无需等待每个调用其他。
    猜你喜欢
    • 2020-10-25
    • 2020-09-01
    • 2023-04-07
    • 2021-05-29
    • 1970-01-01
    • 2021-09-14
    • 2020-02-16
    • 2021-03-28
    • 1970-01-01
    相关资源
    最近更新 更多