04-11-2011, 12:18 PM
J'ai fait un traitement similaire qui peut te donner une orientation pour une bonne partie de ton problème.
Mon traitement repose sur une utilisation d'un tableau avec dépilement du premier élément. Ce tableau contient la liste des actions que le programme doit réaliser l'une après l'autre. A la fin du chargement de ma page, j'appelle une fonction (charge(serveurs.shift())) en fournissant le premier élément du tableau que j'ai dépilé. Cette fonction réalise l'appel AJAX d'après les informations fournies. A la fin du traitement du retour de l'appel AJAX, si il reste encore des éléments dans le tableau, je rappelle la fonction (charge(serveurs.shift())).
En javascript (et JQuery), cela donne :
Par rapport à ta problématique, il faut, à chaque action, empiler un nouvel élément dans le tableau et effectuer un petit traitement pour exécuter la boucle de chargement si aucun chargement n'est actuellement en cours (peut-être: si le tableau est vide alors il faut démarrer la boucle sinon, procéder simplement à l'empilement)
J'espère que ceci te donneras des pistes pour arriver à tes fins.
Mon traitement repose sur une utilisation d'un tableau avec dépilement du premier élément. Ce tableau contient la liste des actions que le programme doit réaliser l'une après l'autre. A la fin du chargement de ma page, j'appelle une fonction (charge(serveurs.shift())) en fournissant le premier élément du tableau que j'ai dépilé. Cette fonction réalise l'appel AJAX d'après les informations fournies. A la fin du traitement du retour de l'appel AJAX, si il reste encore des éléments dans le tableau, je rappelle la fonction (charge(serveurs.shift())).
En javascript (et JQuery), cela donne :
var serveurs=new Array(...,...,...);
function charge(serveur) {
.
.
.
$.ajax({
url: "URL",
async : true,
success: function(data) {
if (serveurs.length>0) {
charge(serveurs.shift());
}
.
.
.
}
});
}
Par rapport à ta problématique, il faut, à chaque action, empiler un nouvel élément dans le tableau et effectuer un petit traitement pour exécuter la boucle de chargement si aucun chargement n'est actuellement en cours (peut-être: si le tableau est vide alors il faut démarrer la boucle sinon, procéder simplement à l'empilement)
J'espère que ceci te donneras des pistes pour arriver à tes fins.