【问题标题】:$.when().done() is firing the done function before when completes [duplicate]$.when().done() 在完成之前触发 done 函数 [重复]
【发布时间】:2017-04-01 14:33:03
【问题描述】:

我有一个这样的页面:

$(document).ready(function() {
    $.when(ajaxcall1(),ajaxcall2(),ajaxcall3()).done(finalCall());
});

由于某种原因,finalCall() 与被$.when() 包围的三个调用同时触发。

我尝试调用finalCall() 函数的引用,如下所示:

$(document).ready(function() {
    $.when(ajaxcall1(),ajaxcall2(),ajaxcall3()).done(finalCall);
});

但即便如此,它仍然会在前 3 个完成之前触发该函数。

注意:我不包括这里的功能,因为它们不相关。我只需要知道为什么finalCall() 函数会与$.when() 函数同时触发。

谢谢。

【问题讨论】:

  • “我不包括这里的函数,因为它们不相关。” 除了....如果从 finalCall() 更改为 finalCall 不相关,它们可能是相关的不要修复它。

标签: javascript jquery .when


【解决方案1】:

$.when 根本不会调用您的回调。你自己做:

//                                                        vv
$.when(ajaxcall1(),ajaxcall2(),ajaxcall3()).done(finalCall());
//                                                        ^^

改成

$.when(ajaxcall1(),ajaxcall2(),ajaxcall3()).then(finalCall);

函数实际上被传递到了promise方法中,它会起作用(假设你的ajax函数返回promise)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-09
    • 1970-01-01
    • 2014-09-17
    • 2013-05-06
    • 2018-11-23
    • 1970-01-01
    相关资源
    最近更新 更多