Necesito obtener un rango de páginas usando AJAX y ponerlas en una matriz, donde su lugar dado en la matriz es igual al i
de un ciclo for (es una función de almacenamiento en caché para páginas de blog, y el rango del bucle for es completamente variable). Estoy haciendo algo parecido a lo siguiente:AJAX call in for loop no devolverá valores para corregir las posiciones de la matriz
var bongo = new Array();
for (i = 0; i < 10; i++) {
jQuery.ajax({ type: "GET", url: 'http://localhost', data: queryString, success: function(request) { bongo[i] = request } })
}
El problema es que a menos que agrego async: false
a las opciones .ajax (lo que haría ... SJAX?), Lo que hace que las peticiones a básicamente pausa el navegador, yendo en contra de lo que estoy tratando de hacer, el i en la devolución de llamada de éxito siempre terminará siendo 11, mientras que, por supuesto, quiero que vierta los datos devueltos en cada ranura de la matriz de 0 a 10.
he intentado reemplazar la línea con esto:
bongo[i] = jQuery.ajax({ type: "GET", url: 'http://localhost', data: queryString }).responseText
Pero eso no hizo diferencia.
Funciona como un encanto. Pero no obtuve lo que la final (i) hace, ¿podría alguien explicar eso? –
el valor de exterior i pasa a la función anónima de autoimpresión de envoltura; la ubicación de este valor único es capturada por la devolución de llamada asíncrona. De esta forma, cada asincrónica obtiene su propio valor, determinado en el momento en que se invoca la función autoejecutable. ¡Ese es el punto de un cierre! ;) – Plastic