flutter - 当我们等待 void 方法时如何在 dart 中运行代码
问题描述
如何secondMethod
在代码中同步或异步执行?
void _firstMethod() async {
await _secondMethod();
}
void _secondMethod() async {
await _someCalculations();
}```
解决方案
来自Dart 语言之旅:
尽管异步函数可能会执行耗时的操作,但它不会等待这些操作。相反,async 函数仅在遇到其第一个等待表达式(详细信息)之前执行。然后它返回一个 Future 对象,仅在 await 表达式完成后恢复执行。
_firstMethod
将一直同步运行到第一个await
关键字。- 然后,它会遇到对 的调用
_secondMethod
。 - 同理,
_secondMethod
会一直调用并同步运行,直到第一个 await,也就是_someCalculations
函数。 - 该函数将被异步调用,并在所需时间后返回其值,
- 从而完成剩下
_secondMethod
的 - 这将返回
_firstMethod
,最后结束它。
从上面的同一个链接中,您应该将 async/await 视为编写看起来同步的异步代码的一种方式。这样,您可以在需要时更轻松地将其理解为线性信息流。
推荐阅读
- c - 我想在c中反向打印一个字符串数组,但它给了我一个错误
- excel - 如何删除具有 4 个名称的单元格的第三个名称
- c++ - 为什么等价条件是必要的?
- python - Django 结合两个查询集
- python - 带有数字键的mongoengine可以吗?
- elastic-stack - Filebeat 的替代品
- vue.js - Bootstrap Vue:b表上的自定义边框列样式和自定义边框行样式
- python - 使用python在同一个数据库中的不同表上同时写入
- adobe-illustrator - 从选定元素中删除剪切路径
- angular - RxJs - 如何使用 takeuntil 运算符返回通知值