jQuery метод .disable()
jQuery объект CallbacksОпределение и применение
jQuery метод .disable() объекта Callbacks позволяет отключить список обратных вызовов от выполнения чего-либо еще.
Отличие метода .disable() от метода .lock(), который позволяет заблокировать список обратных вызовов в текущем состоянии заключается в том, что метод .lock() блокирует только вызов функций, а не их добавление. Эту разницу можно ощутить при создании объекта Callbacks с ключом "memory" (пример ниже).
jQuery синтаксис:
Синтаксис 1.7:
callbacks.disable()
Добавлен в версии jQuery
1.7Пример использования
// возвращаем объект Callbacks и инициализируем переменную этим значением let myCallbacks = $.Callbacks(); // создаем функции и инициализируем переменные этими значениями const fn1 = (val) => console.log("1 " + val), fn2 = (val) => console.log("2 " + val); // добаляем функцию обратного вызова в список обратных вызовов объекта myCallbacks.add( fn1 ); // вызываем все ранее добавленные функции обратного вызова с заданным аргументом myCallbacks.fire( "hello" ); // вывод в консоль: 1 hello // проверяем отключен список обратных вызовов, или нет myCallbacks.disabled(); false // отключаем список обратных вызовов от выполнения чего-либо еще myCallbacks.disable(); // вызываем все ранее добавленные функции обратного вызова с заданным аргументом myCallbacks.fire( "hello" ); // вызов функций не произойдет так как список отключен // проверяем отключен список обратных вызовов, или нет myCallbacks.disabled(); true // добаляем вторую функцию обратного вызова в список обратных вызовов объекта myCallbacks.add( fn2 ); // вызываем все ранее добавленные функции обратного вызова с заданным аргументом myCallbacks.fire( "hello" ); // вызов функций не произойдет так как список отключен
В этом примере мы рассмотрели базовое использование функции $.Callbacks(), которую мы вызвали без параметра и возвратили объект Callbacks. После этого инициализировали две переменные, которые содержат стрелочную функцию.
После этого с помощью метода .add() объекта Callbacks мы добавили функцию в список обратных вызовов объекта Callbacks, и с помощью метода .fire() этого объекта вызываем все ранее добавленные функции обратного вызова с заданным аргументом. В результате чего мы вывели в консоль текстовое сообщение.
Далее с помощью метода .disabled() мы определяем был ли отключен список обратных вызовов, или нет, по очевидным причинам мы получаем логическое значение false, которое указывает на то, что список не отключен. После этого мы используем метод .disable(), который позволяет отключить список обратных вызовов от выполнения чего-либо еще, и с помощью метода .fire() этого объекта вызываем все ранее добавленные функции обратного вызова с заданным аргументом. По той причине, что список отключен вызов нашей функции не произошел.
С помощью метода .disabled() мы определяем был ли отключен список обратных вызовов, или нет, и получаем логическое значение true, которое свидетельствует, что наш список действительно отключен. И наконец, с помощью метода .add() объекта Callbacks мы добавили функцию в список обратных вызовов объекта Callbacks, и с помощью метода .fire() этого объекта вызываем все ранее добавленные функции обратного вызова с заданным аргументом. Как вы можете заметить вызов наших функций не произошел по причине того, что список отключен.
В следующем примере мы рассмотрим нюанс использования метода .disable() для объекта Callbacks, который создан с флагом "memory":
// возвращаем объект Callbacks и инициализируем переменную этим значением let myCallbacks = $.Callbacks("memory"); // указываем параметр со значением memory // создаем функцию и инициализируем переменную этим значением const fn1 = (val) => console.log("1 " + val), fn2 = (val) => console.log("2 " + val); // добаляем функцию обратного вызова в список обратных вызовов объекта myCallbacks.add( fn1 ); // вызываем все ранее добавленные функции обратного вызова с заданным аргументом myCallbacks.fire( "hello" ); // вывод в консоль: 1 hello // отключаем список обратных вызовов от выполнения чего-либо еще myCallbacks.disable(); // вызываем все ранее добавленные функции обратного вызова с заданным аргументом myCallbacks.fire( "hello" ); // вызов функций не произойдет так как список отключен // добаляем функцию обратного вызова в список обратных вызовов объекта myCallbacks.add( fn2 ); // вызов функций не произойдет так как список отключен при использовании .lock() вызов бы произошел немедленно: 2 hello // вызываем все ранее добавленные функции обратного вызова с заданным аргументом myCallbacks.fire( "hello" ); // вызов функций не произойдет так как список отключен при использовании .lock() вызов бы произошел: 1 hello 2 hello
Главной особенностью флага memory является то, что он отслеживает предыдущие значения и вызовет любой обратный вызов, добавленный после того как список обратного вызова был вызван с последними "запомненными" значениями, но при использовании метода .disable() вызовы не будут проиходить при любых обстоятельствах. Если вам необходимо после отключения списка вновь возобновить запуск функций при определенных условиях, вы можете использовать метод .lock().
jQuery объект Callbacks