我目前是 Flutter 和 Dart 的新手。我有一些函数需要在执行另一个函数之前完成。使用 Future Delayed 来延迟该特定功能是否合理?还有其他方法吗?
我想要延迟的函数需要前一个函数的特定数据,并且当它执行时,它返回空值。现在,我希望它在执行以下函数之前完成第一个函数。
不,正如您所说,使用
Future.delayed
是不合理的!
为什么?因为你需要设置一个
Duration
然后有 2 个选项:
1-持续时间太短,第一个功能还没有完成
2-持续时间太长,用户会等待(白等)
由于第一个函数需要时间(我认为它是网络调用或存储调用),它可能返回一个
Future<Something>
并且是 async
。您有 2 个选择:
1- 当
Future
完成时使用回调
yourFirstFunction().then((value) {
// Do something with the returned value
});
2- 使用
await
关键字
final value = await yourFirstFunction();
// Do something with the returned value
这是一个偏好问题。我自己的偏好是使用线性代码风格并使用
await
关键字。
您可以在此处更多地了解
Future
和 await
:https://dart.dev/codelabs/async-await
这不是未来应该如何运作的。 Delays,不会确保前面的进程已完成,为此,您需要创建一个listener或其他类型的控制器来跟踪第一个进程是否结束,或者它们是否返回有效响应。
你能做的就是这个。 这是一种可能的逻辑结构,用于定义您自己的流程:
_first_process_ended == true
和 _second_process_ended == true
启动 第三个流程。