Pass a JavaScript function as parameter
You just need to remove the parenthesis:
addContact(entityId, refreshContactList);
This then passes the function without executing it first.
Here is an example:
function addContact(id, refreshCallback) { refreshCallback(); // You can also pass arguments if you need to // refreshCallback(id);}function refreshContactList() { alert('Hello World');}addContact(1, refreshContactList);
If you want to pass a function, just reference it by name without the parentheses:
function foo(x) { alert(x);}function bar(func) { func("Hello World!");}//alerts "Hello World!"bar(foo);
But sometimes you might want to pass a function with arguments included, but not have it called until the callback is invoked. To do this, when calling it, just wrap it in an anonymous function, like this:
function foo(x) { alert(x);}function bar(func) { func();}//alerts "Hello World!" (from within bar AFTER being passed)bar(function(){ foo("Hello World!") });
If you prefer, you could also use the apply function and have a third parameter that is an array of the arguments, like such:
function eat(food1, food2){ alert("I like to eat " + food1 + " and " + food2 );}function myFunc(callback, args){ //do stuff //... //execute callback when finished callback.apply(this, args);}//alerts "I like to eat pickles and peanut butter"myFunc(eat, ["pickles", "peanut butter"]);
Example 1:
funct("z", function (x) { return x; });function funct(a, foo){ foo(a) // this will return a}
Example 2:
function foodemo(value){ return 'hello '+value;}function funct(a, foo){ alert(foo(a));}//call funct funct('world!',foodemo); //=> 'hello world!'