【问题标题】:How to start async tasks within async tasks in Flutter?如何在 Flutter 的异步任务中启动异步任务?
【发布时间】:2019-12-20 05:54:11
【问题描述】:

有时您有一个异步任务,它的子任务彼此异步,但有多个同步子任务。

例如,今天是清洁日:

Future<bool> clean(String day) async {
  bool allIsClean = false;
  if (day == 'sunday') {
    bool floorIsClean = await;  // Pick up items, vacuum flor, mop floor (in that order);
    bool dishesAreClean = await; // collect dishes, start dishwasher, empty dishwasher (in that order);

    allIsClean = floorIsClean && dishesAreClean;
  }
  return allIsClean;
}

清洁地板和清洁盘子可以异步进行。 当洗碗机运行时,我们可以吸尘地板等。 但是清洁地板必须按照准确的顺序(拾取、吸尘、拖把)进行,洗碗机也是如此。

如何在异步代码块中运行异步代码块,而不必为每个任务创建新的异步函数并从当前异步块中调用它们?

【问题讨论】:

  • 您是否有理由不想创建一个新函数来单独处理每个函数?如果您为地板和餐具创建两个新的未来函数,那么您可以使用 Future.Wait api.dartlang.org/stable/2.4.1/dart-async/Future/wait.html 一起运行它们
  • 并非如此。它只是打破了我的设计模式。我希望我的网络类只包含 http 调用,并且将函数提取到文件的底部会使代码的执行位置变得不那么明显。这与我所代表的一切背道而驰,所以我很容易被转向:)

标签: asynchronous flutter dart async-await


【解决方案1】:
Future.wait([floorIsClean(), dishesAreClean()])

https://api.flutter.dev/flutter/dart-async/Future/wait.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-24
    • 2017-09-30
    • 2018-07-01
    相关资源
    最近更新 更多