我已經繼承了JavaScript代碼,其中Ajax處理程序的成功回調啓動另一個Ajax調用,其中成功回調可能會或可能不會啓動另一個Ajax調用。這導致深層嵌套的匿名功能。也許有一個聰明的編程模式可以避免深層嵌套,並且更加乾燥。另外,在整個函數中都會使用內部變量myVar1和myVar2。編程模式,以扁平深度嵌套ajax回調?
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);
}
}
});
}
});
}
});
略有關。使用服務器播放AJAX「ping-pong」是創建額外等待時間的絕對方法。您可能需要考慮是否有可能在一個請求中完成這項工作,即使這意味着要傳輸更多數據。 – aaaaaaaaaaaa 2010-04-02 01:15:29