J'ai un champ de texte dans lequel je veux sortir un mot à la fois. Les mots sont dans un tableau. Le délai entre les mots à afficher est réglé sur 1 seconde. Le premier mot est montré 2 sec. D'où les doubles déclarations bizarres.Itération avec délai dans l'outil de création de trame
msgArray = [
["Hello", "World"],
["89:23", "Tom Eriksen","Scooores!!"],
["Overtime", "about to", "start"]]
printMessageLoop = (msgArray, target) ->
target.text = msgArray[0]
timeToRead = 1
Utils.delay timeToRead,() ->
for i in [1..msgArray.length-1]
Utils.delay timeToRead*i,() ->
target.text = msgArray[i]
print "i="+i #debugging purpose
Quand j'appelle printMessageLoop(msgArray[2])
les target
affiche le premier mot correctement, mais deux derniers est « non défini ». L'impression dit:
printMessageLoop(msgArray[2])
»i=3
»i=3
Il semble que lorsque la ligne est exécutée target.text = msgArray[i]
que i
est réglé sur la dernière i
. C'est-à-dire i ++ = 3
Pourquoi? Et comment puis-je contourner cela?