0
我從一個node.js視角圍繞Akka環繞我的頭。我在下面執行以下node.js代碼,並且很容易編寫&。我可以輕鬆擴展以處理和聚合多個異步服務,同時保留初始參數狀態數據(示例中爲a
)。Node.js編程風格與Akka
function handleAction(a, b, callback) {
remoteServiceOperation(b, function(err, data) {
if (!err) {
// I can reference argument a
z = a + data; // Do work with a and service result
}
});
}
以下是Akka/Scala的粗略僞指令。我的理解是要求?
塊,應該避免一般。試圖說明我的知識列表在哪裏結束,以及我不清楚如何持有狀態a
,聚合(未顯示),或者可能通常以node.js樣式結構Akka。
receive {
case handleAction(a) =>
remoteService ! new RemoteServiceOperation(b, c)
// About to leave and we'll loose `a`
case remoteServiceOperationResponse(data) =>
// `a` is afk
}
我怎樣才能更像節點寫阿卡?
'?'不是阻塞操作。我認爲你可能會對接收函數的工作原理感到困惑 - 它只是Scala模式匹配,編寫'case handleAction(a)'實際上不會調用一個名爲'handleAction'的函數。 – Ryan
謝謝,[Akka Futures](http://doc.akka.io/docs/akka/snapshot/scala/futures.html#futures-scala)澄清了您關於阻止的要點。使用'?'似乎不是解決問題的唯一方法。 – fionbio