我需要将可变数量的延迟函数传递给$.when,因此需要将它们打包在数组中。我尝试了thisthis的建议,但是在完成所有延迟的功能之后,并未执行done动作。即使阵列中只有一个也不是。

这是我的实际尝试:

function loadAllGames(update_games, update_playoffs) {
    var deferredLoads = [];
    if (update_games !== false)
        deferredLoads.push($.Deferred(loadGames));

    if (update_playoffs !== false)
        deferredLoads.push($.Deferred(loadPlayoffs));

    $.when.apply($, deferredLoads).done(loadPostGamesLoadData());
}


我正在控制台中在loadPostGamesLoadData中记录一些内容,并且可以看到在加载游戏之前记录的内容。

那么执行此操作的实际方法是什么?如何调用一组可变的延迟函数,然后在完成所有延迟函数后执行操作?

最佳答案

您正在呼叫loadPostGamesLoadData,而不是引用它

$.when.apply($, deferredLoads).done(loadPostGamesLoadData);


否则,假设loadGamesloadPlayoffs是解析或拒绝Deferred的函数,则看起来不错。

10-02 20:43