mercredi 26 octobre 2011

Temporisation en coffeescript et javascript

Pour un néophyte ,il est surprenant de ne pas trouver un équivalant à wait ou sleep dans les instructions du javascript. ci dessus des exemples de timers en coffeescript:
console.log("debut")
setTimeout ( -> console.log "fin timeout")
,3000
decalage = (message) ->
console.log(message)
console.log("suite")
setTimeout ( -> decalage "fonction decalage")
,3000
sleep = (time) ->
start = Date.now()
stop = start + time
console.log(start)
console.log(stop)
## A eviter : cela mobilise le processeur pendant
## l'execution du while
while stop > start
start = Date.now()
console.log("debut brute")
sleep(5000)
console.log("fin brute")
view raw wait.coffee hosted with ❤ by GitHub
Le bloc à base de while est à éviter. Il monopolisera les ressources durant son exécution.

L'instruction qui permet de simuler ce comportement est la fonction setTimeout. Sa premiere utilisation est délicate. En effet on est souvent tenté de lui passer en paramètre un appel à une fonction mais c'est une expression qui est attendue.
Dans l'exemple en coffeescript le symbole '->'  permet de définir des fonctions anonymes. '=>' est une variante à cette utilisation.

Aucun commentaire: