$ .ajax,$ .when和apply

时间:2017-01-30 14:29:57

标签: javascript jquery ajax apply

我遇到$.ajax$.whenapply的问题。我有一个构造函数: 它应该是:ajax请求不会被触发: http://plnkr.co/edit/Ul9d8tB7BHoZyHzzQQyB?p=preview (见控制台)

function updateGeneralTerm() {
  return {
    id: "GeneralCondition",
    ajax: function () {
      return $.ajax({
        type: 'POST',
        url: "@Url.Action("UpdateGeneralTerms", "Agreements")",
        data: $("#GeneralConditions").serialize()
      })
    }
  }
}

//I inject it in my custom function        
function CustomFunction(arr) {
  let arrOfAjax = arr.map(function (obj) {
    return obj.ajax
  });
  $.when.apply(null, arrOfAjax);
}

CustomFunction([new updateGeneralTerm()];

在我的CustomFunction中,我正在检查其他内容,表单已更改......等等。但它似乎与我的问题无关。没有任何事情发生。

将来我可能会有一个特定的术语,我只有在表格发生变化时才会更新。

我的问题:$ .when()不要求ajax。如果我要更改为返回obj.ajax(),那么ajax请求不会直接由$ .when()触发。 我希望$ .when()能够处理所有的ajax请求。

http://plnkr.co/edit/Ul9d8tB7BHoZyHzzQQyB?p=preview

1 个答案:

答案 0 :(得分:1)

尝试重写您的CustomFunction函数以使用spread运算符:

function CustomFunction(arr) {
  let arrOfAjax = arr.map(function (obj) {
    return obj.ajax
  });
  $.when(...arrOfAjax).then(function(...results) {
    console.log(results);
  });
}