Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How does the load() function allow the user to provide a callback?

Tags:

javascript

In javascript it's very popular for libraries/frameworks to let us define a callback function for post-processing of data.

eg.

load("5", function(element) {
    alert(element.name);
});

I wonder how the load() function looks like to be able to let the user provide a callback?

Are there good tutorials for this?

like image 287
never_had_a_name Avatar asked Oct 08 '10 07:10

never_had_a_name


4 Answers

Well, the load function could look like this:

function load(arg, callback) {

  var element = { name: "foo " + arg }; // something to pass

  if (typeof callback == 'function') {
    callback(element);
  }
}

With the typeof check we make sure that the callback argument is an object that we can invoke, a function.

Then your example:

load("5", function(element) {
    alert(element.name); // Will show `"foo 5"`.
});
like image 139
Christian C. Salvadó Avatar answered Nov 02 '22 23:11

Christian C. Salvadó


In JavasScript functions are first-class objects. That pretty much means they act like other built in types. You can assign them to variables, pass them into functions, etc.

This article is a helpful link explaining how functions as first-class objects work in JavaScript: http://helephant.com/2008/08/functions-are-first-class-objects-in-javascript/

Joel Spolsky has a detailed and interesting explanation on some of the interesting things/ways you can use functions as first class objects in JavaScript: http://www.joelonsoftware.com/items/2006/08/01.html

Finally, since they're first class objects, functions can very easily accept other functions as parameters:

var load = function(callback) {
  // load something here
  callback();
}
like image 22
Noah Callaway Avatar answered Nov 03 '22 00:11

Noah Callaway


function load(foo, callback) {
    blah(foo);
    callback();
}
like image 40
Quentin Avatar answered Nov 02 '22 23:11

Quentin


function load( number, callback){

    // do something

    if (callback) {
        callback();
    }

}
like image 40
Thilo Avatar answered Nov 02 '22 23:11

Thilo