我在这里看到了一个相当简单的情况:
yield
Future[(String, Date)]
创建了一系列期货
Future.sequence
将IndexedSeq[Future[(String, Date)]]
变为Future[IndexedSeq[(String, Date)]]
onComplete
关于未来的事情,在所有完成之后,对每个未来做些什么。我这样做是因为第一波是数据库插入,我无法进行updateCalculatedField
调用,直到所有插入完成,因为{{1}涉及聚合函数,我不想引入竞争条件。这是代码:
updateCalculatedField
我到底错在了什么? val initialInserts = for(i <- 0 until responseData.numValues()) yield { ... }
val res = Future.sequence(initialInserts)
res.onComplete{
case Success(seq) =>
for((i, d) <- seq)
updateCalculatedField(i, d)
case Failure(e) => e.printStackTrace()
}
调用中的代码永远不会执行,程序退出时不会有任何投诉。我已经检查过,onComplete
等于程序退出后数据库中的行数...所以回调应该已经执行了。我在这里不知所措。
感谢。