- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
是否有可能使 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/
我使用 docker save : > image.rar 导出图像,然后使用 docker import image.rar 将其导入另一个系统。 我可以在运行 docker image ls 时看
我不知道我的设置有什么问题: siegfried@ubuntu:~/chef-repo$ knife ssh -a ipaddress 'name:chefnode' 'uptime'
我有 Pig 脚本和用 Node.js 编写的示例应用程序。我只想从 Node.js 运行 Pig 脚本。 最佳答案 我没有使用过 node.js。但在这里我找到了一个链接来展示如何在 node.js
我正在为需要使用 distutils.extension 编译的某些代码构建docker镜像。我有一个运行python setup.py build_ext --inplace的Makefile。 我
我是一名优秀的程序员,十分优秀!