callbacks.lock()

Lock a callback list in its current state.

.callbacks.lock()🡢 Callbacks

This method returns the Callbacks object onto which it is attached (this).

If the Callbacks object is created with the "memory" flag as its argument, additional functions may be added and fired after the callback list is locked.

Use callbacks.lock() to lock a callback list to avoid further changes being made to the list state:

HTML
// A sample logging function to be added to a callbacks list
var foo = function (value) {
  console.log("foo:" + value);
};

var callbacks = $.Callbacks();

// Add the logging function to the callback list
callbacks.add(foo);

// Fire the items on the list, passing an argument
callbacks.fire("hello");
// Outputs "foo: hello"

// Lock the callbacks list
callbacks.lock();

// Try firing the items again
callbacks.fire("world");

// As the list was locked, no items were called,
// so "world" isn't logged
DEMO

Use callbacks.lock() to lock a callback list with "memory," and then resume using the list:

JS
<div id="log"></div>
HTML
// Simple function for logging results
var log = function (value) {
  $("#log").append("<p>" + value + "</p>");
};

// Two sample functions to be added to a callbacks list
var foo = function (value) {
  log("foo: " + value);
};
var bar = function (value) {
  log("bar: " + value);
};

// Create the callbacks object with the "memory" flag
var callbacks = $.Callbacks("memory");

// Add the foo logging function to the callback list
callbacks.add(foo);

// Fire the items on the list, passing an argument
callbacks.fire("hello");
// Outputs "foo: hello"

// Lock the callbacks list
callbacks.lock();

// Try firing the items again
callbacks.fire("world");
// As the list was locked, no items were called,
// so "foo: world" isn't logged

// Add the foo function to the callback list again
callbacks.add(foo);

// Try firing the items again
callbacks.fire("silentArgument");
// Outputs "foo: hello" because the argument value was stored in memory

// Add the bar function to the callback list
callbacks.add(bar);

callbacks.fire("youHadMeAtHello");
// Outputs "bar: hello" because the list is still locked,
// and the argument value is still stored in memory
DEMO

Looking for a Web Developer?

👋

Hi! I'm Basti, author of this site. If you are looking for a web developer with 15+ years of experience, holla at me!

Be it the good 'ol jQuery, vanilla JS or modern frameworks like Vue and Svelte, front- or backend, I can help you.

Just write me at jobs@jqapi.com :)