1 |
/* |
2 |
Implement defer operations, uniqued by moniker. |
3 |
Only last one will be triggered after delay which is |
4 |
by by default, 200 ms |
5 |
*/ |
6 |
|
7 |
var _defered = new Array(); |
8 |
|
9 |
function defer(func, delay, moniker) { |
10 |
if (! delay) delay = 200; |
11 |
if (! moniker) moniker = 'tmp'; |
12 |
if (! func) { |
13 |
$.log.error('defer needs at least function!'); |
14 |
return null; |
15 |
} |
16 |
|
17 |
if (_defered[moniker]) { |
18 |
clearInterval( _defered[moniker] ); |
19 |
$.log.debug('defer for '+moniker+' postponed for '+delay+' ms'); |
20 |
} |
21 |
_defered[moniker] = setInterval(function() { |
22 |
clearInterval( _defered[moniker] ); |
23 |
$.log.debug('executing '+moniker+' (defered '+delay+' ms)'); |
24 |
func(); |
25 |
}, delay); |
26 |
|
27 |
return null; |
28 |
} |