gpt4 book ai didi

dart - Flutter future 如何重跑?

转载 作者:IT王子 更新时间:2023-10-29 07:19:39 24 4
gpt4 key购买 nike

是否有可能使 future 以某种方式像可重新运行的任务一样?例如,如果我必须使用 future 进行网络调用并且由于身份验证原因而失败。一旦身份验证成功,我想重新运行 future 的网络调用。我怎样才能做到这一点?

我预期的代码可能与此类似

Future task = fetchData();

Future handleService(task) async {
try {
final data = await task;
return data;
} catch (ex) {
// requires authentication
if(ex.code == 202) {
bool authSuccess = await reAuth();
if (authSuccess) {
await task
}
}
}
}

最佳答案

简单的回答:你不能重新运行 Future。

Future 只能完成一次。此外,Future 表示异步计算的结果。我是这样考虑的:您运行一个返回 token ( future )的任务。当任务完成时,它会为 Future 设置值。

最重要的是,Future 只能设置一次值,它不能用 2 个不同的值完成(即使是它所代表的结果的任务)一旦设置了一个值,它将始终保持相同的值,并且不允许修改。

在您的情况下,您需要再次调用 fetchData

如果您有一个可能返回多个值的函数,您可以使用 Stream,但这种方法不适合您的问题。

关于dart - Flutter future 如何重跑?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56249325/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com