在我的函数中使用 Future 延迟来允许之前的函数完成其进程可以吗?

问题描述 投票:0回答:2

我目前是 Flutter 和 Dart 的新手。我有一些函数需要在执行另一个函数之前完成。使用 Future Delayed 来延迟该特定功能是否合理?还有其他方法吗?

我想要延迟的函数需要前一个函数的特定数据,并且当它执行时,它返回空值。现在,我希望它在执行以下函数之前完成第一个函数。

flutter dart delay future
2个回答
1
投票

不,正如您所说,使用

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


-1
投票

这不是未来应该如何运作的。 Delays,不会确保前面的进程已完成,为此,您需要创建一个listener或其他类型的控制器来跟踪第一个进程是否结束,或者它们是否返回有效响应。

你能做的就是这个。 这是一种可能的逻辑结构,用于定义您自己的流程:

  • 调用第一个流程。当进程结束时,将布尔值_first_process_ending设置为true;
  • 调用第二个流程。当进程结束时,将布尔值_second_process_ending设置为true;
  • 如果
    _first_process_ended == true
    _second_process_ended == true
    启动 第三个流程
© www.soinside.com 2019 - 2024. All rights reserved.