Problema com setTimeout javascript

Pessoal tenho esta função que vai colocando “.” em uma mensagem de Aguarde… O problema que desta maneira esta sendo criado variáveis threads.
E mesmo eu fazendo,
window.clearTimeout(timeAguarde);
já foram criadas várias…

como que eu posso resolver isso :?

var timeAguarde = null;	
function Aguarde(paramReticencias){

   if(document.getElementById("mensagemCarregando").innerHTML.length < 12){

      document.getElementById("mensagemCarregando").innerHTML = "Aguarde.";

      if(paramReticencias < 4){

         for(i=1;i<=paramReticencias;i++){            
            document.getElementById("mensagemCarregando").innerHTML += ".";
         }//for

         timeAguarde = setTimeout("Aguarde("+ (paramReticencias+1) +")",200);      

      }else{

         timeAguarde = setTimeout("Aguarde(0)",200);

      }//if

   }//if
}

Não seria algo assim que você gostaria não?!

[code]<html>
<head>
<script>
var timeAguarde = null;
function mostrarAguarde() {
var span = document.getElementById("mensagemCarregando");
if (span.innerHTML.length < 12) {
span.innerHTML += ".";
} else {
span.innerHTML = "Aguarde";
}
timeAguarde = setTimeout("mostrarAguarde()", 200);
}

		function Aguarde() {
			var span = document.getElementById(&quot;mensagemCarregando&quot;);
			if (span.style.display == &quot;none&quot;) {
				span.innerHTML = &quot;Aguarde&quot;;
				span.style.display = &quot;&quot;;
				mostrarAguarde();
			} else {
				clearTimeout(timeAguarde);
				span.innerHTML = &quot;&quot;;
				span.style.display = &quot;none&quot;;
			}
		}
	&lt;/script&gt;
&lt;/head&gt;
&lt;body&gt;
	&lt;span id="mensagemCarregando" style="display=none;"&gt;&lt;/span&gt;<br>
	&lt;input type="button" value="Carregar" onclick="Aguarde();"&gt;
&lt;/body&gt;

</html>[/code]

[quote=dmarcosm]Não seria algo assim que você gostaria não?!

[code]
var timeAguarde = null;
function mostrarAguarde() {
var span = document.getElementById("mensagemCarregando");
if (span.innerHTML.length < 12) {
span.innerHTML += ".";
} else {
span.innerHTML = "Aguarde";
}
timeAguarde = setTimeout("mostrarAguarde()", 200);
}

[code][/quote]

Cada vez que vc chama o mostrarAguarde é criado um novo processo pelo setTimeout(&quot;mostrarAguarde()&quot;, 200);
E quando vc for parar clearTimeout(timeAguarde); ele só vai parar o último processo que foi criado. :x

Na verdade ele não para o último. A função clearTimeout simplesmente impede que o timeout que você fez anteriormente seja executado. A cada setTimeout ele coloca dentro daquela variável o código e o tempo que falta para executá-lo novamente. Com o clear você cancela a chamada ou método!

Copia o código HTML e roda ele na sua máquina que você vai ver! =]

[quote=dmarcosm]Na verdade ele não para o último. A função clearTimeout simplesmente impede que o timeout que você fez anteriormente seja executado. A cada setTimeout ele coloca dentro daquela variável o código e o tempo que falta para executá-lo novamente. Com o clear você cancela a chamada ou método!

Copia o código HTML e roda ele na sua máquina que você vai ver! =][/quote]

Entendi, eu achava que toda vez que ele passava pelo setTimeout era criando um novo processo.
Valeu.
[]'s