public
Created

Backbone.Marionette.Callbaks

  • Download Gist
1.js
JavaScript
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
// Callbacks
// ---------
 
// A simple way of managing a collection of callbacks
// and executing them at a later point in time, using jQuery's
// `Deferred` object.
Marionette.Callbacks = function(){
this.deferred = $.Deferred();
this.promise = this.deferred.promise();
};
 
_.extend(Marionette.Callbacks.prototype, {
// Add a callback to be executed. Callbacks added here are
// guaranteed to execute, even if they are added after the
// `run` method is called.
add: function(callback){
this.promise.done(function(context, options){
callback.call(context, options);
});
},
 
// Run all registered callbacks with the context specified.
// Additional callbacks can be added after this has been run
// and they will still be executed.
run: function(context, options){
this.deferred.resolve(context, options);
}
});

In jQuery since 1.7 version has been added Callbacks plugin, which internally used in the Deferred. You can simplify the code, if use jQuery's Callbacks object directly.

I modified your gist, to use the Callbacks instead of the Deferred: https://gist.github.com/1761003

Thank you for your libraries for Backbone!

Please sign in to comment on this gist.

Something went wrong with that request. Please try again.