我现在没有直接使用它,但这个问题刚刚出现在我脑海中,无法在网上找到一个好的答案:
我有一个函数'callExactKeyFromDB'返回:[A,Future [A]](A =来自本地内存缓存,Future [A] =查询数据库) . 我可以将Future传递给不同的线程/执行上下文并让它们全部注册在'onComplete'上,或者更好的是每次调用此函数时我都会返回一个新的未来,保留已注册的期货列表并在我完成后完成它们能够 .
现在的问题是我能用1 Future做到吗?我应该这样做吗?
(想象一下4个进程从数据库请求用户信息并等待它继续)
2 回答
是的,您可以使用单个
Future
注册多个回调 . 这需要更少的代码,更少的内存,并且更具可读性 .我会摆脱
Either[A,Future[A]]
并将其转换为Future[A]
开头 .这会让事情简单得多,我想...
如果在上下文之间共享
cache
,则一旦保存,就不需要对数据库进行更多调用来获取该特定用户 .然后人们可以混合这些期货创造其他期货
这回答了你的问题了吗?