【发布时间】:2017-08-01 06:01:03
【问题描述】:
我试图从导致Future 的代码的sn-p 中获取值,但是当我运行代码时,结果发现它从未进入onComplete 函数。是不是我做错了什么?
我也尝试过使用地图,因为它在其他帖子中被建议过,但没有成功
override def findOrCreate(phoneNumber: String, creationReason: String): Future[AvroCustomer] = {
//query for customer in db
val avroCustomer: Future[AvroCustomer] = customerByPhone(phoneNumber)
avroCustomer.onComplete({
case Success(null) => {
createUserAndEvent(phoneNumber, creationReason, 1.0)
}
case Success(customer) => {
Future.successful(customer)
}
case Failure(exception) => {
}
})
【问题讨论】:
-
您是否正在等待
Future在调用它的代码中完成运行?您是否可能收到Failure并忽略它? -
也许你的 Future 实际上在很长一段时间内都没有完成。您不妨试试
Await.result进行调试。 -
期货最终在那里 -> 正如@jkinkead 指出的那样,您必须在某个时候等待它们。如果您在程序结束时运行
Future并且不等待它,您将永远看不到结果。 -
我认为您提供的代码无法编译
标签: scala functional-programming future