paulohp Postado Junho 24, 2008 Denunciar Share Postado Junho 24, 2008 olá galera!Minha dúvida é a seguinte...por que o código abaixo não funciona?qual é a maneira correta de se fazer? eu quero que a função teste seja chamada 100 vezes com intervalo de 3 segundos entre cada chamada...vlwfor(var i=0;i<100;i++) setTimeout("teste("+marker+")",3000); ... function teste(marker) { ... } Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 KaKarotto Postado Junho 24, 2008 Denunciar Share Postado Junho 24, 2008 Paulo, acontece o seguinte, com este for, você está criando 100 chamadas de função teste() para 3 segundos.É como se o "Flash" fizesse 100 bolinhas de papel e colocasse num balde, na velocidade da luz e depois de 3 segundos ele virasse o balde de ponta cabeça. Foi isso que o for fez, ele rapidamente criou 100 chamadas para que acontecessem todas após 3 segundos. O for faz as chamadas muito rapidamente, existe uma diferença no tempo da primeira chamada da função para a última, mas é uma diferença muito pequena, devido a velocidade de iteração do for. Na analogia, você percebe que ao virar o balde, as bolinhas não chegarão exatamente ao mesmo tempo no chão.NOOOOOOOOOOOOOSSA eu sou físico...pára...ahuahaauhauahuahauhauahuah :ninja:Eu prefiro criar uma outra função que cuide de fazer as chamadas de outra função.Veja: function teste(marquer){ alert(marquer) } function f(x){ var clock=setInterval( function (){ if(x<4) teste(x) else clearInterval(clock) x++ } , 3000) } f(0)A função f(x) vai usar o setInterval para que chame uma outra função anônima, esta por sua vez chama a sua teste(), usando um contador "x" para saber quantas vezes a função teste foi chamada. Então a chamada f(0) vai de zero até 3. No seu caso é só alterar o x<4 pra x<100, serão 100 chamadas, de 0 a 99. =)Aquele abraço. Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
paulohp
olá galera!
Minha dúvida é a seguinte...
por que o código abaixo não funciona?
qual é a maneira correta de se fazer?
eu quero que a função teste seja chamada 100 vezes com intervalo de 3 segundos entre cada chamada...vlw
Link para o comentário
Compartilhar em outros sites
1 resposta a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.