Javascript klikačka

Při programování počítadla kliků nás torchu trápila vlákna. Respektive mě trápila vlákna. Počítadlo kliků samo o sobě nepotřebuje pracovat s časem. Ale odpočítavadlo, které jsme chtěli mít součástí apky, aby nám odměřilo čas (7sekund) po které můžeme mordovat myš :P, už s časem pracovat musí. A mě napadlo jediné řešení pomocí vláken. No a pak jsem vlákna viděla všude i tam kde nejsou. Takže problém byl v těchto dvou příkazech:

setInterval("odpocet()", 1000);   //spust vlakno v kterem budes kazdou vterinu volat funkci odpocet()
setTimeout('odpocet()', 1000);   //spust funkci odpocet za vterinu

Kdo je líny číst více než tři první písmena příkazu, jako já, těžko vidí rozdíl mezi těmito příkazy. Ale rozdíl je dost zásadní. Prvním příkaz použijeme v případě, že řešíme odpočítavadlo vlákny. Druhý příkaz použijeme, řešíme li odpočítávání pomocí rekurze (rekurze=funkce volá sama sebe).

Odpočítavadlo řešeno pomocí rekurze

			var zbyvajiciCas = 3;
			setTimeout('odpocet()', 1000);	//po uplynuti 1s spust funkci odpocet

			function odpocet(){						//funkce odpocet
				zbyvajiciCas=zbyvajiciCas-1;			//odecti cas
				document.getElementById("cas").innerHTML=zbyvajiciCas;	//vypis cas
				if(zbyvajiciCas>0){
					setTimeout('odpocet()', 1000);	//po uplynuti 1s zavolej samu sebe REKURZE
				}
				console.log("bezi odpocet cas="+zbyvajiciCas);
			}
 

Odpočítavadlo řešeno pomocí vlákna

			var zbyvajiciCas = 3;
var vlasek = setInterval('odpocet()', 1000); //spusteni vlanka, ktere kazdych 1000ms zavola metodu odpocet

function odpocet(){ //funkce odpocet
if(zbyvajiciCas>0){ //pokud nevyprsel cas
zbyvajiciCas=zbyvajiciCas-1; //odecti cas
document.getElementById("cas").innerHTML=zbyvajiciCas; //vypis cas
}else{ //jinak (pokud vyprsel ca)
clearInterval(vlasek); //zlikviduj vlakno jmenem vlasek
}
console.log("cas"+zbyvajiciCas);
}
Kam dál?