< >

Marionette.Callbacks

Warning: deprecated

Marionette.Callbacks are deprecated, and are scheduled to be removed in the next major release of the library. Instead of Callbacks, you should use promises or events to manage asynchronous logic.

The Callbacks object assists in managing a collection of callback methods, and executing them, in an async-safe manner.

There are only two methods:

The add method adds a new callback to be executed later.

The run method executes all current callbacks in, using the specified context for each of the callbacks, and supplying the provided options to the callbacks.

Documentation Index

Basic Usage

var callbacks = new Backbone.Marionette.Callbacks();

callbacks.add(function(options){
  alert("I'm a callback with " + options.value + "!");
});

callbacks.run({value: "options"}, someContext);

This example will display an alert box that says "I'm a callback with options!". The executing context for each of the callback methods has been set to the someContext object, which is an optional parameter that can be any valid JavaScript object.

Specify Context Per-Callback

You can optionally specify the context that you want each callback to be executed with, when adding a callback:

var callbacks = new Backbone.Marionette.Callbacks();

callbacks.add(function(options){
  alert("I'm a callback with " + options.value + "!");

   // specify callback context as second parameter
}, myContext);


// the `someContext` context is ignored by the above callback
callbacks.run({value: "options"}, someContext);

This will run the specified callback with the myContext object set as this in the callback, instead of someContext.

Advanced / Async Use

The Callbacks executes each callback in an async-friendly manner, and can be used to facilitate async callbacks. The Marionette.Application object uses Callbacks to manage initializers (see above).

It can also be used to guarantee callback execution in an event driven scenario, much like the application initializers.

Improve this page