Цикл Node.js for(), возвращающий одни и те же значения в каждом цикле
Я делаю очень простое приложение для изучения nodejs, и у меня есть определенный обработчик, который генерирует HTML код на основе топ10 сообщений в моей базе данных. Сниппет, с которым у меня проблемы, перебирает сообщения, вызывает функцию, генерирующую 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 в качестве параметра функции и передать его в закрытие, но оно все равно вернуло те же результаты.
У меня такое чувство, что мне не хватает критических знаний для решения моей проблемы, могу ли я получить свет на этот вопрос?
Edit : Я'рад предоставить любую другую информацию о коде, я'бы выложил весь git repo, но люди, вероятно,'не хотят плавать через целый проект, чтобы помочь мне отладить эту проблему, поэтому я выложил всю функцию в комментариях, чтобы предоставить больше контекста.
Это должно сработать; однако никогда не следует создавать функцию в цикле. Поэтому,
Я бы предложил сделать это в более функциональном стиле :P
Попробуйте это