时间:2010-07-26 16:34:41

标签: javascript erlang node.js

4 个答案:

答案 0 :(得分:7)

Node.js与Twisted的共同点多于Erlang / OTP。 Node.js只是一个单线程SEDA事件循环。 Node.js与Erlang VM在分发,热代码重新加载和流程可扩展性方面没有任何关系,它与“使用Javascript糖的Erlang”无关“

答案 1 :(得分:7)

也许是因为你的Erlang知识,你认为Node.js与“节点”(作为erlang节点)有某种关系,但它只是名称。

Node.js的主要思想是推迟所有昂贵的I / O操作并将回调分配给这些操作的结果。原因是I / O阻止了此时正在运行的(唯一)进程。鉴于您正在以正确的方式编码,Node.js将为您处理此问题。

一个简单的例子是数据库调用:

result = SQL.query("EXPENSIVE SELECT HERE")
doSomething(result);
moreStuff(); // This line must wait until the previous ones are completed.

在节点中,您将以一种非常不同的方式对此进行编码:

SQL.query("EXPENSIVE SELECT HERE", function(result) {
  doSomething(result);
});
moreStuff(); // This line executes inmediately

如果您的Node.js脚本中有错误的代码,例如:

while(true) { }

然后你阻止了这个过程,它将无法处理比当前请求更多的请求,因此在Node.js中必须遵循上述指南。

答案 2 :(得分:4)

答案 3 :(得分:1)

node.js中没有“节点”

如上所述,当你运行

node my_script.js 

您正在运行一个V8 java脚本解释器实例 (在其生命周期中使用一个核心。)