我開始寫的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