使用$ .when()。done时,函数运行两次

时间:2015-04-03 23:09:26

标签: jquery function

当我使用$.when().done时,该函数被调用两次而不是一次。我希望在函数及其所有代码完成后运行代码。而且我这样做成功......

function whenDone() {
  alert("test")
}

$("button").on("click", function() {

  whenDone();

  $.when( whenDone() ).done(function() {
    // DO OTHER STUFF
  });

});

唯一的问题是whenDone()函数被调用了2次。如何阻止函数执行两次并在完成执行所有内容后仍然运行代码?

这支笔显示了我的意思。只需点击“按钮”http://codepen.io/anon/pen/YPMopN

即可

2 个答案:

答案 0 :(得分:4)

whenDone不是异步函数,因此您不需要使用$.when。它的代码执行完毕后才会返回。同步功能只需按顺序运行:

$("button").on("click", function() {
    whenDone();
    // Do other stuff
});

答案 1 :(得分:0)

您不需要whenDone();$.when已经调用了该功能。