【发布时间】:2020-10-18 15:56:27
【问题描述】:
我有一个使用 for-comprehension 运行数据库查询的代码:
val totalFeeNoticeAmountFromDB = Future(/..Doing db job../)(executionContext)
val listOfRestrictedFundFromDB = Future(/..Doing db job../)(executionContext)
val res = for {
totalFeeNoticeAmount <- totalFeeNoticeAmountFromDB
listOfRestrictedFund <- listOfRestrictedFundFromDB
} yield (totalFeeNoticeAmount, listOfRestrictedFund)
我们知道,为了运行理解,我们需要传递隐式执行上下文。
但在这种情况下,我想手动传递执行上下文。
有什么办法?
已编辑:
val res = for {
totalFeeNoticeAmount <-(?:ExecutionContext) totalFeeNoticeAmountFromDB
listOfRestrictedFund <-(?:ExecutionContext) listOfRestrictedFundFromDB
} yield (totalFeeNoticeAmount, listOfRestrictedFund)
totalFeeNoticeAmountFromDB 和 listOfRestrictedFundFromDB 都是已启动的 Future 类型。
有没有办法通过这里
<-(?:ExecutionContext)?
【问题讨论】:
-
任何隐式参数都可以作为普通参数显式传递,但是如果同一个调用有多个隐式参数,那么所有这些参数都必须显式传递。
-
@cchantep,我知道。我编辑了我的问题。实际上我想在这个
<-(?:ExecutionContext)部分中明确地传递执行上下文。 -
我相信最简单的方法是为该部分创建一个新的块或函数,并为该块设置一个新的隐式执行上下文。
-
其他简单的替代方案,考虑到您的未来不相互依赖,将使用您想要的明确 EC 创建它们,然后组合它们。