JavaScript: creare timer ripetuti in modo accurato

JavaScript: creare timer ripetuti in modo accurato

Il problema principale della funzione setInterval() sta nell'accuratezza con cui viene calcolato l'intervallo di tempo. Su intervalli brevi questa funzione non mostra evidenti problemi, ma su intervalli più lunghi (diversi secondi) non è affatto accurata. Per questo motivo si raccomanda l'uso di setTimeout().

La soluzione consiste nel richiamare setTimeout() all'interno del timer principale:


var timer = null,
	action = function() {
		console.log( "Test" );
	};
	
	timer = setTimeout(function() {
		
		action();
		
		setTimeout( action, 2000 );
		
	}, 2000);

Usare arguments.callee è deprecato nella modalità strict di ECMAScript 5, quindi non andrebbe usato.

Torna su