使用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(); }); 
Interesting Posts