I'm using $.when
to run 2 functions prior to some other logic. Now, in several cases I need to run a different set of functions prior to doing that same logic, so I wanted to pass an array of the functions to $.when
, but couldn't make it run.
Something like:
function funcA(){
console.log("funcA");
}
function funcB(){
console.log("funcB")
}
var funcArr = [funcA, funcB];
$.when(funcArr).then(function(){
console.log("DONE!");
});
But this doesn't work and the only thing written to the console is "DONE!". I read the following How do you work with an array of jQuery Deferreds?, but the following behaves the same:
$.when.apply($, funcArr).then(function(){
console.log("DONE!")
});
What's wrong there? Thanks.
Your inputs to
$.when
aren't of typeDeferred
, which is the expected input type for the function - http://api.jquery.com/jQuery.when/At the simplest level, you could construct
Deferred
types with your functions as thebeforeStart
construction parameters. Like:Here's a working fiddle: http://jsfiddle.net/6MeM5/
Additionally:
If you're just trying to execute each function in an array of functions, you don't need to get
Deferred
involved. Just iterate the array using$.each
, like: