$.when() 延迟数组
$.when() array of deferreds
我需要将可变数量的延迟函数传递给 $.when
,因此需要将它们打包到一个数组中。我已经尝试了 this and this 的建议,但是在所有延迟函数完成后 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
我可以在游戏加载之前看到记录的内容。
那么真正做到这一点的方法是什么?我怎样才能调用一组可变的延迟函数,然后在所有这些函数完成后执行一个动作?
删除完成回调中的()
:
.done(loadPostGamesLoadData);
您的问题是您正在调用方法而不是引用它。
您正在调用 loadPostGamesLoadData
,而不是引用它
$.when.apply($, deferredLoads).done(loadPostGamesLoadData);
否则它看起来不错,假设 loadGames
和 loadPlayoffs
是解析或拒绝 Deferred 的函数。
我需要将可变数量的延迟函数传递给 $.when
,因此需要将它们打包到一个数组中。我已经尝试了 this and this 的建议,但是在所有延迟函数完成后 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
我可以在游戏加载之前看到记录的内容。
那么真正做到这一点的方法是什么?我怎样才能调用一组可变的延迟函数,然后在所有这些函数完成后执行一个动作?
删除完成回调中的()
:
.done(loadPostGamesLoadData);
您的问题是您正在调用方法而不是引用它。
您正在调用 loadPostGamesLoadData
,而不是引用它
$.when.apply($, deferredLoads).done(loadPostGamesLoadData);
否则它看起来不错,假设 loadGames
和 loadPlayoffs
是解析或拒绝 Deferred 的函数。