如何在ajax中使用多个条件延迟响应?

时间:2018-03-12 04:35:40

标签: javascript ajax

我有两个ajax调用,其中一个是有条件的,即

   var url1Response, url2Response;

   var def1 = $.ajax({
                    url: Url1,
                    success: function (response) {
                        url1Response= response;
                    }

                });

   var def2 = $.ajax({
                    url: Url2,
                    success: function (response) {
                        url2Response= response;
                    }
                });

   var defs = [];
   defs.push(def1);
   if (x == 1) // some condition
      defs.push(def2);

   $.when.apply($, defs).then(_self.callback, _self.failureCallback);

   _self.callback = function (response) {

   };
   _self.failureCallback = function (response) {

   };

当两个def都被执行时,我无法在回调输入参数中看到这两个响应。我只能看到url1Response。

有人可以帮助我如何处理这样的条件延迟语句响应,即只执行1个ajax,执行,执行但是一个失败等等?

1 个答案:

答案 0 :(得分:0)

这是因为当您使用$.when.apply($, defs)时,每个响应都会作为不同的参数发送到then。所以,你可以把它当作:

_self.callback = function (response1, response2) {
};

甚至可以使用扩展语法:

_self.callback = function (...responses) {
    // response is a array with all responses
};