首页 > 解决方案 > 当我们等待 void 方法时如何在 dart 中运行代码

问题描述

如何secondMethod在代码中同步或异步执行?

void _firstMethod() async {
    await _secondMethod();
}

void _secondMethod() async {
  await _someCalculations();
}```

标签: flutterdart

解决方案


来自Dart 语言之旅

尽管异步函数可能会执行耗时的操作,但它不会等待这些操作。相反,async 函数仅在遇到其第一个等待表达式(详细信息)之前执行。然后它返回一个 Future 对象,仅在 await 表达式完成后恢复执行。

  • _firstMethod将一直同步运行到第一个await关键字。
  • 然后,它会遇到对 的调用_secondMethod
  • 同理,_secondMethod会一直调用并同步运行,直到第一个 await,也就是_someCalculations函数。
  • 该函数将被异步调用,并在所需时间后返回其值,
  • 从而完成剩下_secondMethod
  • 这将返回_firstMethod,最后结束它。

从上面的同一个链接中,您应该将 async/await 视为编写看起来同步的异步代码的一种方式。这样,您可以在需要时更轻松地将其理解为线性信息流。


推荐阅读