我开始写的Node.js服务器,不知道是否我正在做的事情以正确的方式...有效的封闭结构中的node.js
基本上我的结构是这样下面的伪代码:
function processStatus(file, data, status) {
...
}
function gotDBInfo(dbInfo) {
var myFile = dbInfo.file;
function gotFileInfo(fileInfo) {
var contents = fileInfo.contents;
function sentMessage(status) {
processStatus(myFile, contents, status);
}
sendMessage(myFile.name + contents, sentMessage);
}
checkFile(myFile, gotFileInfo);
}
checkDB(query, gotDBInfo);
一般情况下,我想知道如果这是node.js的编写正确的方式,更具体:
1)是VM足够聪明运行“同时”(即切换上下文)每个回调之间不要挂断大量连接的客户端?
2)当运行垃圾收集,它会清除彻底,如果最后的回调(processStatus)完成了记忆?
对于点#1澄清,这很重要,如果回调嵌套或者是完全不相干的? 对于点#2,我的意思是垃圾收藏 - 澄清以上,由于 – davidkomer
@davidkomer#1是的,没有。如果你需要包含数据(你在'gotFileInfo'中通过访问在包装函数中定义的'myFile'来完成的操作,它就是重要的。你使用命名的方法来定义函数,我不能肯定地说如果是这样的话 - 如果是这样的话,并且为你保留范围更多的权力,我强烈建议你通过定义匿名函数来嵌套回调函数对外部函数(做一个闭包)的要求:var someFunk = function(){/ *我没有名字* /};'然后用'someFunk'在回调传递 –
@davidkomer坦白地说,你的示例代码似乎“太同步”你必须让IO或异步处理,以适应范式。 Node.js的 – leesei