调用ajax调用序列的模式?

时间:2014-03-11 10:13:40

标签: javascript jquery ajax chain

我有一个方法,有4个后续的ajax调用,看起来像:

$.ajax({
    success: function( response ){
        $.ajax({
            success: function( response ) {
               ..more calls deeper..
            },
            error: function( ) {
                showError();
            }
        });
    },
    error: function( ) {
        showError();
    }
});

是否有任何模式可以在没有嵌套和重复错误回调的情况下链接所有thouse调用?

3 个答案:

答案 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函数,只要确保你很好地测试结束条件。否则你可以通过这种方法获得无限循环。