当我的页面加载时,我会进行一次AJAX调用,然后根据页面上的内容进行另一次调用。我想在两者结束时调用一个函数;我该怎么做?
var dfd = $.when( $.ajax(...) );
if( $("type").val() == "something" ) {
dfd.when( $.ajax(...) );
}
dfd.then(function() {
// final code
});
我找不到添加到$.when "conditionally"
或“更晚”的内容,因为这些搜索字词与承诺本身的原始目的太接近了,所以我只得到$.when(a, b).then(c)
的标准用法
由于
答案 0 :(得分:7)
您的代码应该更像这样:
var dfd = $.ajax(...);
var dfd2 = $.ajax(...);
var deferreds = [];
if($("type").val() == "something")
deferreds.push(dfd)
if($("other").val() == "somethingElse")
deferreds.push(dfd2)
$.when.apply( $, deferreds )
.then( callback, failureCallback );
答案 1 :(得分:1)
要执行问题所要求的内容,(执行一个调用,然后可选择调用第二个调用),可以按照以下修改Mister Epic的答案。基本上,我已经在函数中包含了ajax调用,因此只有在条件为真时才调用dfd2。
var dfd = function () {
$.ajax(...);
};
var dfd2 = function () {
$.ajax(...);
};
var deferreds = [];
deferreds.push(dfd())
if($("type").val() == "something")
deferreds.push(dfd2())
$.when.apply( $, deferreds )
.then( callback, failureCallback );
答案 2 :(得分:0)
我使用Q.js库成功完成了这项工作; http://documentup.com/kriskowal/q/
$ajax(...).then(function(val){
if($("type").val() == "something") { return $.ajax(...);}
)};