$ .when()延迟数组

时间:2016-12-29 09:13:25

标签: javascript jquery ajax jquery-deferred

我需要将可变数量的延迟函数传递给$.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中登录控制台,我可以看到在加载游戏之前记录了什么。

那么实际的方法是什么?如何调用延迟函数的变量集,然后在完成所有这些函数后执行操作?

2 个答案:

答案 0 :(得分:4)

您正在调用loadPostGamesLoadData,而不是引用它

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

否则它看起来很好,假设loadGamesloadPlayoffs是解析或拒绝延迟的函数。

答案 1 :(得分:1)

删除完成回调中的()

.done(loadPostGamesLoadData);

您的问题是您正在调用该方法而不是引用它。