我正在制作这个非常简单的应用程序来帮助我探索 nodejs,并且我有一个特定的处理程序,它可以根据我的数据库中的前 10 条消息生成 HTML 代码。我遇到问题的片段循环遍历消息并调用生成 HTML 的函数并将结果附加到我的 html 字符串。
function CreateMessageboard(BoardMessages){
var htmlMessageboardString = "";
[... Console debug code ...]
for(var i = 0; i < BoardMessages.length;i++){
(function(){
var j = i;
console.log("Loading message %d".green, j);
htmlMessageboardString += MessageToHTMLString(BoardMessages[j]);
})();
}
}
我认为我的问题是由于Javascript处理循环的方式,与我读到的闭包有关,这是我在上面尝试使用的,或者是nodejs处理我的函数的异步方式。现在从数据库很好地返回了 10 个结果,但最后一条消息在每个循环中处理。
我也试过,而不是做 var j = i,取值 i 作为函数参数并将它传递到闭包中,无论如何它返回了相同的结果。
我有一种感觉,我缺少解决问题的关键知识,我可以了解一下这个问题吗?
编辑:欢迎我提供有关代码的任何其他信息,我会发布整个 git repo,但人们可能不想浏览整个项目来帮助我调试这个问题,所以我将整个函数发布在评论以提供更多上下文。