Page 86 - jQuery для начинающих
P. 86
— А в чём сила, брат?
— В аргументах
По умолчанию, вы можете прямо из консоли вызвать метод fire() снова и снова, и будете
получать один и тот же результат раз за разом. А можно задать поведение Callbacks через
флаги:
— once – все функции будут вызваны единожды (аналогично как в Deferred).
— memory – сохранять значение с последнего вызова fire(), и скармливать его в
ново-зарегистрированные функции обратного вызова, и лишь потом
обрабатывает новое значение (в Deferred именно так).
— unique – список функций обратного вызова фильтруется по уникальности
— stopOnFalse – как только какая-нить функция вернёт false, процесс запуска
остановится
Наверное, будет лучше с примерами, вот once:
var C = $.Callbacks("once");
C.add(function(msg) { console.log(msg+" first") });
C.add(function(msg) { console.log(msg+" second") });
C.fire("Go");
C.fire("Again"); // не даст результата, только Go
>>>
Go first
Go second
C memory посложнее, будьте внимательней:
var C = $.Callbacks("memory");
C.add(function(msg) { console.log(msg+" first") });
C.fire("Go");
C.add(function(msg) { console.log(msg+" second") });
C.fire("Again");
>>>
Go first
Go second // без флага, этой строчки не было бы
Again first
Again second
86
www.trk.kg