有条件地添加到jQuery .when

Sea*_*ean 3 jquery promise jquery-deferred .when

当我的页面加载时,我会进行一次AJAX调用,然后根据页面上的内容进行另一次调用.我想在两者结束时调用一个函数; 我该怎么做?

var dfd = $.when( $.ajax(...) );

if( $("type").val() == "something" ) {
  dfd.when( $.ajax(...) );
}

dfd.then(function() { 
   // final code
});
Run Code Online (Sandbox Code Playgroud)

我找不到更多关于添加$.when "conditionally"或"稍后"的内容,因为这些搜索词太接近于承诺本身的原始目的,所以我只是得到了标准用法$.when(a, b).then(c)

谢谢

Mis*_*pic 8

您的代码看起来应该更像这样:

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 );
Run Code Online (Sandbox Code Playgroud)

ref:https://api.jquery.com/jQuery.when/

  • 请注意,此答案中的代码*总是*两个ajax调用,但只有条件*等待*其中一些. (2认同)