jquery $ .done立即执行

时间:2018-06-13 23:26:39

标签: javascript jquery ajax asynchronous promise

$.when(fetchingOutcomeTab()).done(alert("1"));

function fetchingOutcomeTab() {
    var dfd = $.Deferred();
    setTimeout(function() {
        dfd.resolve('qqqqq');
    }, 2000);
    return dfd.promise();
}

我试图提醒(" 1")触发等待,直到fetchingOutcomeTab功能完成,但每次它都会立即触发,请帮助。

2 个答案:

答案 0 :(得分:0)

由于函数返回延迟对象,因此可以将done()直接链接到函数调用。此外,done()期望参数是"函数或函数数组"。



fetchingOutcomeTab().done(function() {
  console.log('resolved.');
});

function fetchingOutcomeTab() {

  console.log('Deferring...');

  var dfd = $.Deferred();

  setTimeout(function() {
    dfd.resolve('qqqqq');
  }, 2000);

  return dfd;

}

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

您需要将函数传递给.done()。您立即呼叫alert()并传递其返回值。

$.when(fetchingOutcomeTab()).done(() => alert("1"));