Como chamar uma função ajax em um loop for [duplicado]
Esta pergunta já tem uma resposta aqui:
JavaScript encerramento dentro de loops - exemplo prático simples 39 respostasEu sou novo no ajax e no JavaScript. O que estou tentando fazer é chamar uma função ajax várias vezes para buscar determinados dados de um recurso e, em seguida, "enviar" todos os dados para uma matriz, para que eu possa usá-los posteriormente no código. Aqui está o meu 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
}
}
});
}
O problema com o código é que ele é impresso no console mesmo quandoi
não é igual ausers.length
Minha pergunta é; como garantir que aguarde atéi == users.length
é verdadeiro antes de imprimir no console? Lembre-se de que ainda desejo que o processo seja assíncron