Ich versuche, den Wert aus einem Codeschnipsel zu ziehen, der zu einem Future
führt, aber wenn ich den Code durchführe, stellt es sich heraus, dass es nie die onComplete
Funktion eingibt. Gibt es irgendetwas, was ich falsch mache?Scala Future tritt nicht onComplete() ein
Ich habe versucht, auch eine Karte verwenden, da es in anderen Beiträgen vorgeschlagen wurde, haben aber keinen Erfolg hatte
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) => {
}
})
Warten Sie auf die 'Future' zu fertig mit dem Code, der das aufruft? Erhalten Sie vielleicht ein "Scheitern" und ignorieren es? – jkinkead
Vielleicht ist Ihre Zukunft tatsächlich nicht für eine sehr lange Zeit abgeschlossen. Möglicherweise möchten Sie 'Await.result' zum Debuggen versuchen. – francoisr
Futures sind _eventuell_ da -> Sie müssen irgendwann auf sie warten, wie @jkinkead es ausdrückte. Wenn Sie am Ende des Programms eine "Zukunft" ausführen und nicht darauf warten, werden Sie nie Ergebnisse sehen. – sebszyller