Page 87 - jQuery для начинающих
P. 87
Пример с уникальностью прост до безобразия:
var C = $.Callbacks("unique");
var func = function(msg) { console.log(msg+" first") };
C.add(func);
C.add(func); // эта строка не повлияет на результат
C.fire("Go"); // только Go first
Флаг stopOnFalse :
var C = $.Callbacks("stopOnFalse");
C.add(function(msg) {
console.log(msg+" first");
return false; // вот он – роковой false
});
C.add(function(msg) { console.log(msg+" second") });
C.fire("Go"); // только Go first
Перечисленные флаги можно комбинировать и получать интересные результаты, а можно
не получать, а лишь посмотреть на пример callbacks.html
Из истории: объект Deferred отпочковался от метода ajax() в результате
рефакторинга версии 1.5. Шло время, появлялись новые версии jQuery, и вот новый
виток рефакторинга – результатом стало отделение Callbacks от Deferred в
версии 1.7, таким образом в текущей версии фреймворка метод ajax()
работает с объектом Deferred, который является надстройкой над Callbacks.
Дабы не вносить путаницу в терминологию, я использую определение «Deferred
Callbacks» и при работе с Callbacks, ибо колбэков много, и каждый раз уточнять,
что я говорю именно «о том самом» - дело достаточно утомительное.
Статьи по данной теме:
— «Что такое этот новый jQuery.Callbacks Object»
[http://habrahabr.ru/post/135821/]
— «jQuery Deferred Object (подробное описание)»
[http://habrahabr.ru/post/113073/]
— «Async JS: The Power of $.deffered»
[http://www.html5rocks.com/en/tutorials/async/deferred/]
87
www.trk.kg