2009-03-21 7 views
1

deux fonctions doivent être exécutées en Javascript, la seconde seulement après la fin du premier.exécuter la fonction à la fin d'un autre, utilisez ajaxComplete()?

La première remplit un tableau avec getJSON et la seconde le manipule ensuite. Cependant, getJSON est asynchrone, donc il ne mettra pas en pause l'ordre d'exécution pour que le programme fonctionne correctement afin que le tableau finisse de charger avant que la deuxième fonction puisse s'exécuter. Comment peut-on utiliser ajaxComplete() de Jquery ou encore le callback getJSON pour simplement exécuter la seconde fonction une fois que les données ont fini de se charger via getJSON.

Merci.


est le code ici:

function fetch_ids(user) 
var url = 'http://test.com/ids/' + escape(user) + '.json?callback=?'; 
// populate array ids[] with JSON data --uid[] array declared globally 
$.getJSON(url, function(data) { 
for(var i = 0; i < data.length; i++) ids[i] = data[i]; 
}); 
// test array and run alert 
for(i=0;i<uid.length;i++){ 
for(j=0;j<ids.length;j++){ 
if(uid[i]==ids[j]) 
{alert('matched: ' + uid[i]);} 
} 
} 
// finish test 
} 

Répondre

4

Ne serait-ce travail?

$.getJSON(url, params, function (jsonData){ 
    // populate array 
    // call 2nd function. 
}); 

pire des cas, si vous avez vos 2 funcions déjà défini ailleurs:

$.getJSON(url, params, function (jsonData){ 
    firstFunction(jsonData); 
    secondFunction(jsonData); 
}); 
+0

Non cela ne fonctionne malheureusement pas. Il s'agit de déclencher une deuxième fonction une fois que $ .getJSON a fini d'être exécuté. – Adrian33

+0

Je ne comprends pas ... qu'est-ce qui ne va pas avec le déclenchement du 2ème appel en tant que dernière ligne du rappel getJSON? Pourquoi avez-vous besoin d'attendre la fin du rappel? – Seb

+0

Si vous devez remplir le tableau, faites-le dans le premier appel ou dans le rappel getJSON; après cela, vous n'avez pas besoin d'attendre que ça finisse; vous pouvez appeler la 2ème fonction juste là. Si ce n'est pas le cas, veuillez mettre à jour votre question en précisant pourquoi. – Seb