我有一个方法,有4个后续的ajax调用,看起来像:
$.ajax({
success: function( response ){
$.ajax({
success: function( response ) {
..more calls deeper..
},
error: function( ) {
showError();
}
});
},
error: function( ) {
showError();
}
});
是否有任何模式可以在没有嵌套和重复错误回调的情况下链接所有thouse调用?
答案 0 :(得分:3)
这样的事情:
$.when(
// first one
//data = data1
$.get("your-url-1-here"),
// second one
// data = data2
$.get("your-url-2-here"),
// third one
//data = data3
$.get("your-url-3-here"),
// fourth one
// data = data4
$.get("your-url-4-here")
).then(function( data1, data2, data3, data4 ) {
//Do something with data1, data2, data3 and data4
});
答案 1 :(得分:0)
关于错误回调的重复,只需指向showError
函数,如下所示:
error: showError
无需将其包装在那里的函数中
答案 2 :(得分:-1)
var flagIsFinished = false;
function ajax(successCB, errorCB){
if(!flagIsFinished){
$.ajax({
'success':function(){
ajax(successCB, errorCB);
}
'error':errorCB
});
}
}
使用旗帜。完成后,在successCB中设置为true。像这样你永远不必担心你有多少次运行ajax函数,只要确保你很好地测试结束条件。否则你可以通过这种方法获得无限循环。