You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

39 lines
1.1 KiB

/*
* Disposes signals synchronously and asynchronously.
*/
if (typeof(bobj.crv.SignalDisposer) == 'undefined') {
bobj.crv.SignalDisposer = new function() {
var signals = []; //private variable
var timerID = null; //private variable
var CLEAN_SIGNALS_PER_TASK = 20;
var disconnect = MochiKit.Signal.disconnect;
this.dispose = function(signal, sync) {
if(signal != null) {
if(sync) {
disconnect(signal);
}
else {
signals.push (signal);
if (timerID == null)
timerID = setInterval (bobj.bindFunctionToObject (cleanTask, this), 100);
}
}
};
cleanTask = function() {
var count = CLEAN_SIGNALS_PER_TASK;
while (signals.length > 0 && count > 0) {
disconnect (signals.pop ());
count--;
}
if (signals.length == 0 && timerID != null) {
clearInterval (timerID);
timerID = null;
}
}
};
}