Search code examples
javascriptajaxcallbackcall

How to pass a callback as a parameter into another function


I'm new to ajax and callback functions, please forgive me if i get the concepts all wrong.

Problem: Could i send a callbackfunction as a parameter to another function that will execute the callback?

function firstFunction(){
    //some code

    //a callback function is written for $.post() to execute
    secondFunction("var1","var2",callbackfunction);
}

function secondFunction(var1, var2, callbackfunction) {
    params={}
    if (event != null) params = event + '&' + $(form).serialize();

    // $.post() will execute the callback function
    $.post(form.action,params, callbackfunction);
}

Solution

  • Yup. Function references are just like any other object reference, you can pass them around to your heart's content.

    Here's a more concrete example:

    function foo() {
        console.log("Hello from foo!");
    }
    
    function caller(f) {
        // Call the given function
        f();
    }
    
    function indirectCaller(f) {
        // Call `caller`, who will in turn call `f`
        caller(f);
    }
    
    // Do it
    indirectCaller(foo); // logs "Hello from foo!"

    You can also pass in arguments for foo:

    function foo(a, b) {
        console.log(a + " + " + b + " = " + (a + b));
    }
    
    function caller(f, v1, v2) {
        // Call the given function
        f(v1, v2);
    }
    
    function indirectCaller(f, v1, v2) {
        // Call `caller`, who will in turn call `f`
        caller(f, v1, v2);
    }
    
    // Do it
    indirectCaller(foo, 1, 2); // logs "1 + 2 = 3"