使用jQuery.when()定义的数组
我正在使用$.when
在其他逻辑之前运行2个函数。 现在,在几种情况下,我需要在执行相同的逻辑之前运行一组不同的函数,所以我想将函数数组传递给$.when
,但是无法使其运行。
就像是:
function funcA(){ console.log("funcA"); } function funcB(){ console.log("funcB") } var funcArr = [funcA, funcB]; $.when(funcArr).then(function(){ console.log("DONE!"); });
但这不起作用,写入控制台的唯一内容是“完成!”。 我阅读以下内容如何使用jQuery Deferreds数组? ,但以下行为相同:
$.when.apply($, funcArr).then(function(){ console.log("DONE!") });
那有什么不对? 谢谢。
您对$.when
输入不是Deferred
类型,这是函数的预期输入类型 – http://api.jquery.com/jQuery.when/
在最简单的级别,您可以使用函数构造Deferred
类型作为beforeStart
构造参数。 喜欢:
var funcArr = [$.Deferred(funcA), $.Deferred(funcB)];
这是一个工作小提琴: http : //jsfiddle.net/6MeM5/
另外:
如果您只是尝试在函数数组中执行每个函数,则不需要参与Deferred
。 只需使用$.each
迭代数组,如:
$.each(funcArr, function(){ this(); });