Ir para conteúdo
Fórum Script Brasil
  • 0

Dúvida timeout


paulohp

Pergunta

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

for(var i=0;i<100;i++)
setTimeout("teste("+marker+")",3000);

...


function teste(marker) 
{
...
}

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

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.

Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...