我已经继承了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