1

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.

1 Answer 1

3

Your inputs to $.when aren't of type Deferred, 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 the beforeStart construction parameters. Like:

var funcArr = [$.Deferred(funcA), $.Deferred(funcB)];

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:

$.each(funcArr, function(){
    this();
});
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.