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
   80   81   82   83   84   85   86   87   88   89   90