У меня есть функция, которая запускает цикл for и затем возвращает результаты цикла for после его завершения. Моя проблема заключается в том, что в этой функции цикла у меня есть 2 функции назад, которые имеют обратные вызовы, и они занимают около половины секунды, чтобы они закончили (возможно, меньше). Когда я делаю вызов с надлежащими данными, мой массив результатов вызывается назад после его завершения, однако, пока имена пользователей уникальны, изображения идентичны, что не то, что я хочу. Я считаю, что это имеет какое-то отношение к JS, пытающемуся быть асинхронным, но это просто ломается. Вот мой код:Проблемы с обратными вызовами функции в цикле for
function forCallback(rows, callback){
var done = 0;
for(i = 0 ;i < rows.length; i++){
var steamid = rows[i].steamid;
userinfo.getUserName(steamid, function(name){
userinfo.getUserPicture(steamid, function(picture){
results.push({
name: name,
picture: picture
})
done++;
console.log("Queried " + done + " username(s)")
if(done == (rows.length)){
callback(results);
}
});
});
}
}
Функция принимает в SQL строк и анализирует данные, таким образом, если вы задаетесь вопросом. Любая помощь приветствуется, СПАСИБО!
Вы пробовали обертывать материал петли в IFFE? – JordanHendrix
Взгляните на это объяснение (абзац Закрытия внутри петель): http://bonsaiden.github.io/JavaScript-Garden/#function.closures – wawawoom