我試圖從代碼片段中獲取結果爲Future
的值,但是當我運行代碼時,事實證明,它永遠不會輸入onComplete
函數。有什麼我做錯了嗎?Scala未進入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'到完成在調用此代碼的代碼中運行?你是否可能會遇到「失敗」並忽略它? – jkinkead
也許你的未來實際上並沒有完成很長一段時間。您可能希望嘗試'Await.result'進行調試。 – francoisr
期貨在那裏是最終的 - >你必須在@jkinkead指出的某個時刻等待它們。如果您在程序結束時運行「Future」,並且不等它,您將永遠不會看到結果。 – sebszyller