我继承了 JavaScript 代码,其中 Ajax 处理程序的成功回调启动另一个 Ajax 调用,其中成功回调可能会也可能不会启动另一个 Ajax 调用。这导致了深度嵌套的匿名函数。也许有一种聪明的编程模式可以避免深度嵌套并且更干。此外,还有在整个函数中使用的内部变量 myVar1 和 myVar2 的问题。
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);
}
}
});
}
});
}
});
最佳答案
不需要所有的回调都是匿名的和内联定义的,你可以在别处声明它们,在指定回调时只使用函数名。
关于javascript - 扁平化深层嵌套的 ajax 回调的编程模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2564486/