Tehtävien ajastus ja rekursio setTimeout
Tietokone suorittaa tehtävänsä valtavan nopeasti. Joskus on tarvetta hidastaa tahtia, jotta hitaat ihmiset pääsevät mukaan tapahtumiin.
JavaScriptissä haluttu hidastus saadaan valmiilla metodilla
setTimeout
("tehtävä", aika millisekunteina).
Tässä yhteydessä käytetään tavallisesti rekursiota,
joka tarkoittaa sitä, että funktio kutsuu itse itseään, jolloin syntyy
loppumaton funktion toisto, ellei kiertoa ohjelmoida loppumaan jossakin
vaiheessa. Toisto saadaan loppumaan myös komennolla clearTimeout().
Kun haluat tulostaa näytölle jotakin, kannattaa useimmiten käyttää komentoa
getElementById("elementin_id").innerHTML =
Alla on yksinkertainen esimerkki laskurista, joka tulostaa luvut näytölle sekuntin välein:
Koodi | Koodin tulos |
---|---|
<script type="text/javascript">
var luku = 0;
// ajastin-muuttujan avulla toisto saadaan loppumaan.
var ajastin;
kasvata_lukua();
function kasvata_lukua()
{
luku = luku+1;
document.getElementById("laskuri").innerHTML = luku;
ajastin = setTimeout("kasvata_lukua()",1000);
}
// Tämä pysäyttää laskurin:
function pysayta_laskuri()
{
clearTimeout(ajastin);
}
</script>
|
Tämän lisäksi yllä tarvitaan laskuri-elementti ja painikkeet "Käynnistä laskuri" ja "Pysäytä laskuri":