Executar determinada função num intervalo de tempo variável

3 participantes

Ver o tópico anterior Ver o tópico seguinte Ir para baixo

Tópico resolvido Executar determinada função num intervalo de tempo variável

Mensagem por Connor R. 27.01.21 6:47

Detalhes da questão


Endereço do fórum: https://somosmugiwara.forumeiros.com/
Versão do fórum: ModernBB

Descrição


Possuo o código abaixo, este que realiza um sorteio trocando as imagens até parar o sorteio. O código já funciona normalmente, mas estou tentando deixar a troca das imagens menos linear. Explico melhor, ao clicar no sorteio a troca das imagens dura 12 segundos com uma velocidade, windowsetInterval, de 100. Gostaria de deixar esta velocidade menos linear, com uma variância maior. Seria algo assim, começa em 100 e decai 10 a cada segundo, deixando um efeito de parada mais nítido. Pois do jeito que está a parada é súbita. Gostaria deste efeito de lentidão. Ando estudando o windowsetInterval e pensei no seguinte, criar uma nova variável, sendo esta array com todos os valores e simplesmente aplicar no windowsetInterval, mas não sei se funcionaria desta maneira. Espero dicas.

https://jsfiddle.net/Kadanda/f7cqdkn8/
Connor R.

Connor R.
Super Membro

Membro desde : 06/08/2012
Mensagens : 1253
Pontos : 2021

http://somosmugiwara.forumeiros.com https://www.facebook.com/kadandajr https://twitter.com/SomosMugiwara

Ir para o topo Ir para baixo

Membro Entusiasta

Tópico resolvido Re: Executar determinada função num intervalo de tempo variável

Mensagem por Luiz 28.01.21 15:17

Você pode utilizar um código como este:

Código:
function createInterval(rounds, intervalMs, incrementMs, callback, endCallback) {
  createTimeout(0);

  function createTimeout(elapsed) {
    const interval = intervalMs + incrementMs * elapsed;

    setTimeout(() => {
      if (elapsed < rounds) {
        if (typeof callback === 'function') {
          callback();
        }

        createTimeout(elapsed + 1);
      } else {
        if (typeof endCallback === 'function') {
          endCallback();
        }
      }
    }, interval);
  }
}

Supondo que você invoque createInterval assim:

Código:
createInterval(5, 2000, 500, () => {
  console.log('Woop!');
});

Executará o callback 5 vezes, com um intervalo inicial de 2000 milissegundos. A cada intervalo, incrementa-se o temporizador em 500 milissegundos. Se você quiser decrementar o intervalo, ao invés de 500, por exemplo, passe -500 (um número com sinal negativo).

Não vou montar o código todo para você, mas talvez isso ajude. Feliz
Luiz

Luiz
Membro Entusiasta
Membro Entusiasta

Membro desde : 23/04/2016
Mensagens : 6645
Pontos : 7451

https://luizfelipe.dev

Ir para o topo Ir para baixo

Tópico resolvido Re: Executar determinada função num intervalo de tempo variável

Mensagem por Connor R. 29.01.21 3:44

@Luiz Obrigado meu chapa, creio que entendi.
Connor R.

Connor R.
Super Membro

Membro desde : 06/08/2012
Mensagens : 1253
Pontos : 2021

http://somosmugiwara.forumeiros.com https://www.facebook.com/kadandajr https://twitter.com/SomosMugiwara

Ir para o topo Ir para baixo

Membro Entusiasta

Tópico resolvido Re: Executar determinada função num intervalo de tempo variável

Mensagem por RafaelS. 29.01.21 11:51

Tópico resolvido


Movido para "Questões resolvidas".
RafaelS.

RafaelS.
Membro Entusiasta
Membro Entusiasta

Membro desde : 26/04/2014
Mensagens : 5746
Pontos : 7156

http://techmais.forumeiros.com/

Ir para o topo Ir para baixo

Ver o tópico anterior Ver o tópico seguinte Ir para o topo

- Tópicos semelhantes

Permissões neste sub-fórum
Não podes responder a tópicos