0
我的代碼結構如下。這只是一個例子複製的高水平structure.:-如何從Scala獲取價值未來onComplete/onSuccess
import scala.concurrent.Future
class FutureReturnsAValue extends PersonAgeModifier {
def main(args: Array[String]) {
val jhonObj = Person("Jhon", 25)
val punishmentResult = addAgeCurse(jhonObj)
println("The punishment result for Jhonny is " + punishmentResult)
}
def addAgeCurse(person: Person): String = {
val oldAge = person.age
val futureAge = LongProcessingOpForAge(person)
futureAge.onSuccess {
newAge =>
if (newAge = oldAge + 5) {
"screw the kiddo, he aged by 5 years" // somehow return this string
}
else {
"lucky chap, the spell did not affect him" // somehow return this string
}
}
}
}
class PersonAgeModifier {
def LongProcessingOpForAge(person: Person): Future[Int] = {
Future.successful {
person.age + 5
}
}
}
case class Person
(
val name: String,
var age: Int
)
object Person {
def apply(name: String, age: Int) = new Person(name, age)
}
所以我的要求是這樣的: - 我需要從addAgeCurse()方法的字符串。現在我知道你可能會建議將未來值LongProcessingOpForAge()傳遞給main(),但這不是我想要的。
問題:
- 什麼是獲得字符串,並將其傳遞給main()的最徹底的方法。 (通過乾淨,我的意思是一些不使用的等待時間X作爲參與我想,以避免任何人工干預。)
感謝
你將不得不等待未來在某個地方完成。你可以改變你的函數來返回一個未來,然後在main中等待,或者等待這個函數。 – Tyler
或者撰寫而不是等待 – cchantep
@cchantep,這裏如何撰寫幫助。你能提供更多的信息嗎?謝謝 – BigDataScholar