我使用JavaScript控制器初始化一个获取参数的方法。取决于参数的值,我使用$ .when()和then()方法从ajax调用中获取数据。
具体来说,如果在$。内传递的参数是真的,那么我希望有4个ajax调用,否则有3个。
$.when(
$.ajax({
url: "test.html"
}).done(function () {
$(this).addClass("done");
}),
$.ajax({
url: "test2.html"
}).done(function () {
$(this).addClass("done");
}),
$.ajax({
url: "test3.html"
}).done(function () {
$(this).addClass("done");
}),
if (config,EditMode) {
$.ajax({
url: "test3.html"
}).done(function () {
$(this).addClass("done");
})
}
).then(function () {
if (config,EditMode)
somemethod();
else
someOtherMethod();
}).done(function () {
//code
});
我尝试了类似上面的内容,但我不能真正使语法工作。 当然,我可以创建一个全局if else,只是复制代码。 但我会从DRY原则中得到投诉:))。
你有什么想法吗? 感谢
答案 0 :(得分:4)
请勿在{{1}}的通话中直接将$.ajax
来电作为参数。
更简单的方法是创建各个承诺的数组:
$.when()
然后使用var promises = [];
promises.push($.ajax(...));
promises.push($.ajax(...));
promises.push($.ajax(...));
if (config.EditMode) {
promises.push($.ajax(...));
}
传递列表:
.apply
当你事先不知道要传递多少参数时,这是调用函数的常用方法。