【发布时间】:2015-06-02 18:36:22
【问题描述】:
考虑以下代码位:
def receive = {
case ComputeResult(itemId: Long) =>
//val originalSender = sender
computeResult(itemId).map { result =>
originalSender ! result
}
}
computeResult 的结果是 Future,那么引入 val 将如何防止我将结果发送给错误的发送者?假设我有一个完全不同的发件人(sender1 和 sender2)。
Sender1 首先发送一条消息,然后是 Sender2。如果没有上面我的方法中的 val,我清楚地看到我的 Sender2 有可能获得实际上适用于 Sender1 的结果。
我不明白的是,引入 val 将如何阻止我刚刚描述的场景?
【问题讨论】: