J'ai hérité du code JavaScript où le rappel de succès d'un gestionnaire Ajax initie un autre appel Ajax où le rappel de succès peut initier ou non un autre appel Ajax. Cela conduit à des fonctions anonymes profondément imbriquées. Peut-être qu'il y a un modèle de programmation intelligent qui évite l'emboîtement profond et qui est plus SEC. En outre, il y a le problème des variables internes myVar1 et myVar2 qui sont utilisées dans toutes les fonctions.Modèle de programmation pour aplanir les rappels ajax profondément imbriqués?
jQuery.extend(Application.Model.prototype, {
process: function() {
var myVar1;
// processing using myVar1;
jQuery.ajax({
url:myurl1,
dataType:'json',
success:function(data) {
var myVar2;
// process data using myVar1, set state of myVar2,
// then send it back
jQuery.ajax({
url:myurl2,
dataType:'json',
success:function(data) {
// do stuff with myVar1 and myVar2
if(!data.ok) {
jQuery.ajax({
url:myurl2,
dataType:'json',
success:mycallback
});
}
else {
mycallback(data);
}
}
});
}
});
}
});
Légèrement en relation. Jouer AJAX "ping-pong" avec le serveur est un moyen sûr de créer un temps d'attente supplémentaire. Vous voudrez peut-être considérer s'il est possible de faire le travail en une seule requête, même si cela implique de transmettre plus de données. – aaaaaaaaaaaa