Skip to content

Instantly share code, notes, and snippets.

@ytnobody
Created February 18, 2011 09:29
Show Gist options
  • Save ytnobody/833464 to your computer and use it in GitHub Desktop.
Save ytnobody/833464 to your computer and use it in GitHub Desktop.
jiku - javascript timer management object

NAME

jiku - javascript timer management object

SYNOPSIS

// slates setTimeout
var x = new jiku.timer( 'Timeout', 5000, [ 'mytag', 'test', 'link' ], function(){ ... } );

// slates setInterval
var y = new jiku.timer( 'Interval', 20000, [ 'interval', 'mytag' ], function(){ ... } );

// stop all timer that has "interval" tag
jiku.stop( 'interval' );

AUTHOR

ytnobody

var jiku = {};
jiku.version = 0.01;
jiku.list = {};
jiku.timer = function ( mode, time, tags, cb ) {
if ( !mode || !cb || !time ){ return null };
if ( typeof( tags ) == 'undefined' ) { tags = [] };
var method = 'set' + mode;
this.id = eval(method+"( cb, time )");
this.mode = mode;
this.tags = tags;
this.cb = cb;
this.time = time;
this.stop = function(){
var m = 'clear' + this.mode;
eval(m+"("+this.id+")");
delete jiku.list[ this.id ];
};
this.has = function( tag ){
for ( var k in this.tags ) {
if ( this.tags[k] == tag ) { return true };
}
return false;
};
jiku.list[ this.id ] = this;
return this;
};
jiku.timers = function ( tag ) {
var timer;
var rtn = [];
for ( var tmid in jiku.list ) {
timer = jiku.list[ tmid ];
if ( timer.has( tag ) ) { rtn.push( timer ) };
}
return function( f ) {
var r = [];
var k;
for ( var i in rtn ) {
k = f( rtn[i] );
if ( typeof( k ) != 'undefined' ) {
r.push( k );
}
}
return r;
};
};
jiku.stop = function ( tag ) {
jiku.timers( tag )( function( timer ){
timer.stop();
} );
}
/*
=head1 NAME
jiku - javascript timer management object
=head1 SYNOPSIS
// slates setTimeout
var x = new jiku.timer( 'Timeout', 5000, [ 'mytag', 'test', 'link' ], function(){ ... } );
// slates setInterval
var y = new jiku.timer( 'Interval', 20000, [ 'interval', 'mytag' ], function(){ ... } );
// stop all timer that has "interval" tag
jiku.stop( 'interval' );
=head1 AUTHOR
ytnobody
=cut
*/
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment