Chain
function Chain() {}
Chain.prototype.add = function (num) {
console.log(num);
return this;
}
new Chain().add(1).add(2);
//1
//2
Вместо аргумента num можно передавать функции, которые необходимо выполнить. Они будут выполнены последовательно - по цепи.
Передача цифр интересное занятие, но не настолько интересное как передача функций как аргументов. Допустим нам нужно последовательно выполнить несколько функций. Тогда наш паттерн цепь можно изменить так:
function Chain() {}
Chain.prototype.fn = function (fn) {
fn();
return this;
}
new Chain().
fn(
function () {
... много много кода
console.log(1);
}
).
fn(
function () {
... много много кода
console.log(2);
}
);
//1
//2
Паттерн не сработает только в одном случае, если внутри функций будут функции с задержками выполнения(setTimeoup, setInterval), например анимация. Для решения проблем задержек был разработан паттерн
Chain Deferred.