J'essaie d'obtenir la valeur d'un extrait de code qui résulte en Future
, mais quand je cours le code, il s'avère qu'il n'entrera jamais la fonction onComplete
. Y a-t-il quelque chose que je fasse mal?Scala Future ne pas entrer onComplete()
J'ai essayé d'utiliser une carte aussi bien depuis qu'il a été suggéré dans d'autres postes, mais ne l'ai pas eu du succès
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) => {
}
})
Est-ce que vous attendez le 'Future' à finir de courir dans le code qui appelle cela? Est-ce que vous obtenez peut-être un 'Failure' et l'ignorez? – jkinkead
Peut-être votre avenir ne se termine-t-il pas vraiment très longtemps. Vous pouvez essayer 'Await.result' pour le débogage. – francoisr
Futures sont _ventuellement_ là -> vous devez les attendre à un moment donné que @jkinkead a souligné. Si vous lancez un 'Future' à la fin du programme et que vous ne l'attendez pas, vous ne verrez jamais les résultats. – sebszyller