jQuery pone en cola múltiples llamadas JSON y devolución de llamada [duplicado]

Posible duplicado:
Secuencia de solicitudes ajax

Tengo una serie de nombres de artistas. Para cada nombre de artista, hago una llamada ajax json a un servicio web para obtener canciones de este artista.

Mi pregunta ahora es: ¿Cómo puedo estar seguro de que todas las solicitudes de ajax se realizan (ya sea con éxito o fallan).

Miré Diferidos y Gerente de Ajax, pero no puedo implementarlo para que se ejecute (si es el método correcto...)

Mi código se parece a:

$.each(tf.suggestedArtists, function(index, artist){
  var url = tf.enBaseUrl + "song/search?api_key=" + tf.apiKey + "&format=json&artist=" + artist.name + "&bucket=id:spotify-WW&bucket=tracks"

  $.ajax({
    type: "GET",
    url: url,
    dataType: 'json',
  }).done(function( data ) {
    //...do some more stuff

No es posible realizar estas llamadas de forma asíncrona debido a problemas de JSON y entre dominios.

preguntado el 31 de julio de 12 a las 14:07

podría mirar gnarf.net/2011/06/21/jquery-ajaxqueue para un poco de inspiración -

1 Respuestas

Si desea asegurarse de que todas las solicitudes de ajax se completen, puede usar una declaración if y $.active,.

if($.active > 0){ 
  //There's an ajax request pending.
}else{
  //No ajax requests pending.
}

Respondido 31 Jul 12, 15:07

Que bueno, no sabia de eso. Y funciona para llamadas jQuery Ajax. El siguiente problema es que en cada una de mis llamadas ajax, recibí otra llamada asíncrona de otra biblioteca. pero creo que esa es otra pregunta... - acuerdo

@AndreasGeibert Sí. $.activo no esta documentado, pero está expuesto en jQuery API, por lo que es bastante fácil de encontrar y usar. ¿Recibió otra llamada asíncrona de otra biblioteca? ¿Por qué no ahorrarse el dolor de cabeza y utilizar solo 1 biblioteca? Casi nunca hay ninguna razón para usar cosas como mootools + jquery, o scriptaculous + jquery, o mootools + scriptaculous... adhiérase a 1 y utilícelo, es una apuesta más segura. - Oh Dios por qué

no, lo siento, lo escribí mal: en mi llamada ajax, llamo a la api de spotify a través de la biblioteca de spotify. ningún otro framework/lib de javascript. y esa llamada de spotify tambien es asincrona... - acuerdo

@Andreas Geibert Esto detectará cualquier llamada ajax. si es getJSON...ajax....post...no importa, todos son solo psuedo-wrappers para jQuery's ajax. Cualquier solicitud XHR que se esté ejecutando se detectará con $.active. - Oh Dios por qué

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.