JSFiddle - React, Tailwind, and code Playground
by pavel_krupala
HTML
<script src="http://documentcloud.github.com/underscore/underscore-min.js"></script>
<script src="http://backbonejs.org/backbone-min.js"></script>
JavaScript
function Batch(options) {
this.initialize(options);
};
_.extend(Batch.prototype, {
_name: "--unknown batch name--",
_steps: 0,
_total_steps: 0,
_callbacks: [],
initialize: function(options) {
console.log('Batch::initialize','options', options);
this._name = options.name;
this._steps = 0;
this._total_steps = options.steps;
this._callbacks = options.callbacks
},
addStep: function(msg) {
this._steps++;
console.log("<"+this._name+"> "+this._steps+"/"+this._total_steps+" update message: " + msg);
if (this._steps > this._total_steps) {
console.log("<"+this._name+"> Error - you added too much steps to this batch");
}
if (this.isDone()) {
while (!_.isEmpty(this._callbacks)) {
var func = this._callbacks.shift();
if (!_.isUndefined(func)) {
console.log('<'+this._name+'>'+ ' -- executing callback:', func);
func.call();
}
}
}
},
isDone: function() {
return (this._steps == this._total_steps);
}
});
var a = new Batch({
name: 'test1',
steps: 3,
callbacks: [
function() {
console.log('callback1');
},
function() {
console.log('callback2');
}
]
});
console.log(a);
a.addStep();
a.addStep();
a.addStep();
a.addStep();