Ich habe JavaScript-Code geerbt, bei dem der Erfolgsrückruf eines Ajax-Handlers einen weiteren Ajax-Aufruf initiiert, bei dem der Erfolgsrückruf einen weiteren Ajax-Aufruf auslösen kann oder auch nicht. Dies führt zu tief verschachtelten anonymen Funktionen. Vielleicht gibt es ein cleveres Programmiermuster, das die Tiefenverschachtelung vermeidet und eher TROCKEN ist. Außerdem gibt es das Problem der inneren Variablen myVar1 und myVar2, die in allen Funktionen verwendet werden.Programmiermuster, um tief verschachtelte Ajax Callbacks zu glätten?
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);
}
}
});
}
});
}
});
Leicht verbunden. Das Spielen von AJAX "Ping-Pong" mit dem Server ist eine sichere Möglichkeit, zusätzliche Wartezeiten zu schaffen. Sie sollten überlegen, ob es möglich ist, den Auftrag in nur einer Anforderung auszuführen, selbst wenn das bedeutet, dass mehr Daten übertragen werden müssen. – aaaaaaaaaaaa