Работа с объектом Callbacks в jQuery: использование списка callback-функций


Объект Callbacks в jQuery позволяет создать нечто вроде списка обратных функций, которые будут выполнены при вызове служебного метода fire(). При этом при вызове метода fire() возможно передать какой-то аргумент, который будет использован каждой callback-функцией. Как это работает, мы разберем сейчас на нескольких примерах.

Допустим нам необходимо создать две функции, которые выводят в консоль некое сообщение, используя принимаемый аргумент. При этом мы ленивы и хотим запускать их «пачкой» с помощью лишь одной магической кнопки. В первую очередь опишем эти функции:

1
2
3
4
5
6
7
8
9
// первая функция
var firstFunction = function( value ) {
  console.log( "firstFunction: " + value );
};
 
// вторая функция
var secondFunction = function( value ) {
  console.log( "secondFunction: " + value );
};

Обе функции принимают аргумент, который добавляется к сообщению, и результат выводится в консоль. Создадим объект Callbacks и добавим в его список наши функции:

1
2
3
4
5
6
7
var callbacks = $.Callbacks();
 
// добавляем первую функцию в список
callbacks.add( firstFunction );
 
// добавляем вторую функцию в список
callbacks.add( secondFunction );

Теперь вызываем их обе используя метод fire() объекта Callbacks. В качестве параметра передаем аргумент для использования внутри функции:

1
callbacks.fire( "тест" );

В консоли мы увидим два сообщения:

1
2
firstFunction: тест
secondFunction: тест

В список callback-методов можно добавлять еще какие-то функции, при этом при дальнейшем вызове они будут вызваны все в порядке добавления.

Можно отключить вызов имеющихся в списке callback-методов, используя disable():

1
callbacks.disable();

После этого вызов callbacks.fire( «тест» ) в консоли ничего не выведет.

Список callback-методов можно очистить, используя метод empty():

1
callbacks.empty();

Также можно проверить, имеется ли в списке нужная функция. Сделать это можно с помощью метода has():

1
console.log( callbacks.has( firstFunction ) );

Данная проверка в нашем случае выведет true до вызова метода empty() и false — после.

Также можно удалять ненужную функцию из списка с помощью метода remove():

1
callbacks.remove( firstFunction );

Это полезно, когда не нужно очищать весь список, а только конкретные функции.





Другие посты

Категория: jQuery

Оставить комментарий