Cómo llamar a una función ajax en un bucle for [duplicado]
Esta pregunta ya tiene una respuesta aquí:
JavaScript cierre dentro de bucles - ejemplo práctico simple 39 respuestasSoy nuevo en ajax y JavaScript. Lo que intento hacer es llamar a una función ajax varias veces para obtener ciertos datos de un recurso y luego "insertar" todos los datos en una matriz para que pueda usarlos más adelante en el código. Aquí está mi código.
var arr = [];
var users = ["brunofin", "comster404", "ESL_SC2", "OgamingSC2", "cretetion", "freecodecamp", "storbeck", "habathcx", "RobotCaleb", "noobs2ninjas"];
for (i = 0; i < users.length; i++) {
$.ajax({
url: "https://api.twitch.tv/kraken/streams/" + users[i],
success: function(data) {
arr.push(data);
},
error: function(data) {
arr.push("blank");
},
complete: function() {
if (i == users.length) {
console.log(arr); //This seem to print even when the condition isn't true
}
}
});
}
l problema con el código es que se imprime en la consola incluso cuandoi
no es igual ausers.length
Mi pregunta es; ¿Cómo me aseguro de que espere hastai == users.length
es cierto antes de imprimir en la consola? Tenga en cuenta que todavía deseo que el proceso sea asíncrono.