$.when().done() 在完成之前触发 done 函数

$.when().done() is firing the done function before when completes

我有这样一个页面:

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

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

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

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

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

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

谢谢。

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

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

将其更改为

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

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