Показать сообщение отдельно
  #29 (permalink)  
Старый 22.12.2011, 20:38
Аватар для Gozar
Отправить личное сообщение для Gozar Посмотреть профиль Найти все сообщения от Gozar
 
Регистрация: 07.06.2007
Сообщений: 7,504

Сообщение от FINoM Посмотреть сообщение
Лишний метод. Если человек хочет запустить цепь потом, проще сделать так:
w = function(){
  return wait(...).wait(...)
}
w();
А как по поводу такого? Он не лишний, он позволяет делать так:

var chain = function () {};

chain.prototype.deferred = [];

chain.prototype.add = function (fn) {
    this.deferred.push(fn);
    return this;
}
chain.prototype.next = function () {
    if (this.deferred.length) {
        this.deferred.shift().apply(this);
    }
}
chain.prototype.start = function () {
    this.deferred.shift().apply(this);
}




var a = new chain().
    add(function(){
        var self = this;
        setTimeout(function () {
            console.log(1);
            self.next();
        }, 1000);
    }).
    add( function(){
        var self = this;
            setTimeout(function () {
                console.log(2);
                self.next();
            }, 1000);
    }).
    add( function(){
        console.log(3);
        this.next();
    });

setTimeout(function(){
    console.log('добавим чего-нибудь в цепь');
    a.add(function(){
        console.log(4);
    }).start();
},2000);



Сообщение от FINoM Посмотреть сообщение
Я сперва тоже так думал, но
var self = this;
тоже кажется излишним.
С этим пока не знаю что делать, может забить?

Сообщение от FINoM Посмотреть сообщение
+ у тебя теряется целостность. Если последний коллбек сработал, следующие звенья не запустятся.
Можно пример? Не понимаю.
__________________
Последний раз редактировалось Gozar, Сегодня в 24:14.

Последний раз редактировалось Gozar, 22.12.2011 в 20:45.
Ответить с цитированием