我遇到$.ajax
,$.when
和apply
的问题。我有一个构造函数:
它应该是: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请求。
答案 0 :(得分:1)
尝试重写您的CustomFunction
函数以使用spread
运算符:
function CustomFunction(arr) {
let arrOfAjax = arr.map(function (obj) {
return obj.ajax
});
$.when(...arrOfAjax).then(function(...results) {
console.log(results);
});
}