Page 85 - jQuery для начинающих
P. 85
На этом возможности Deferred ещё не завершились, есть ещё связка методов notify() и
progress() – первый шлёт послания в callback-функции, которые зарегистрированы с
помощью второго. Приведу наглядный код для демонстрации (копи-паст в консоль, и
смотрите что получается):
var D = $.Deferred();
var money = 100; // наш бюджет
// съём денежки
D.progress(function($){
console.log(money + " - " + $ + " = " + (money-$));
money -= $;
if (money < 0) {
// деньги закончиличь
this.reject();
}
});
// тратим деньги
setTimeout(function(){ D.notify(40); }, 500); // покупка 1
setTimeout(function(){ D.notify(50); }, 1000); // покупка 2
setTimeout(function(){ D.notify(30); }, 1500); // покупка 3
D.done(function(){ console.info("All Ok") });
D.fail(function(){ console.error("Insufficient Funds") });
Испытайте всю мощь Deferred в примере deferred.html
Callbacks
Callbacks – это крутой объект – он позволяет составлять списки функций обратного вызова, а
также даёт бразды правления над ними. Работать с ним проще нежели с Deferred, тут нет
разделения на позитивный и негативный сценарии, лишь стек callback функций, который
будет выполнен по команде fire():
var C = $.Callbacks();
C.add(function(msg) { console.log(msg+" first") });
C.add(function(msg) { console.log(msg+" second") });
C.fire("Go");
85
www.trk.kg