开发者

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

开发者_StackOverflow社区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?


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"`.
});


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();
}


function load(foo, callback) {
    blah(foo);
    callback();
}


function load( number, callback){

    // do something

    if (callback) {
        callback();
    }

}


Functions are just like normal types and can be passed as arguments:

function load(param1, callback) {
    // call the callback parameter one second later
    setTimeout(function() {
        callback(param1);
    }, 1000);
}


function(callback,argumentArray) {
    var result = callback.apply(this,argumentArray);
}

Points to be noted:

  • this can be null. In that case if this is used in the callback implementation then it would point to the Global object.
  • argumentArray is actually a JavaScript Array of arguments required by the callback method.
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜