0
考慮下面的代碼片段未來終端應用
class MyActor extends Actor {
def receive = {
case msg: String =>
val f: Future[Long] = <some future>
f pipeTo self
context.become(afterFuture)
}
def afterFuture: Receive = {
case futureResult: Long =>
// process the future result
}
}
所描述的情況所以,我們必須啓動一個未來的執行中的演員,管道它導致自身。然後它改變它的行爲,以便能夠處理未來的結果。 在context.become的調用可以生效之前,是否有未來終止的可能性,並且因此演員無法處理未來的結果?
我的猜測是,它不是因爲當前消息(msg:String)的處理只會在context.become生效後終止,此時郵箱中的下一條消息將被處理,新的行爲將會已經到位。儘管如此,我還是希望得到其他人肯定比我更有認識的人。