【发布时间】:2026-02-04 09:00:02
【问题描述】:
我从 node.js 的角度来了解 Akka。我在下面做了以下node.js代码,很容易编写和遵循。我可以轻松扩展以异步处理和聚合多个服务,同时保留初始参数状态数据(例如a)。
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
}
如何写出更像节点的 Akka?
【问题讨论】:
-
?不是阻塞操作。我想你可能对接收函数的工作方式感到困惑——它只是 Scala 模式匹配,写case handleAction(a)并不会真正调用名为handleAction的函数。 -
谢谢,Akka Futures 澄清了您对阻塞的看法。使用
?似乎不是唯一的出路。
标签: functional-programming closures akka