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

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

Atendido / 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.
Membro do Fórum

Masculino
Inscrito dia : 06/08/2012
Mensagens : 1168
Pontos Ativos : 1899

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

Atendido / 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
Principal contribuidor
Principal contribuidor

Masculino
Inscrito dia : 23/04/2016
Mensagens : 6639
Pontos Ativos : 7553

https://luizfelipe.dev

Atendido / 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.
Membro do Fórum

Masculino
Inscrito dia : 06/08/2012
Mensagens : 1168
Pontos Ativos : 1899

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

Atendido / 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".


Eu sou o RafaelS.,
Eu aconselho-lhe ler os seguintes tópicos:

Admineiros Para evitar ser punido é importante que leia  o regulamento geral do Fórum dos fóruns.
Admineiros Antes de criar o seu pedido de suporte certifique-se de ler o regulamento da seção de suporte.
Admineiros Quando for criar o seu tópico tente ser o mais específico possível, para que nós possámos entender!

"O importante não é vencer todos os dias, mas lutar sempre."
Executar determinada função num intervalo de tempo variável 1163
RafaelS.

RafaelS.
Admineiro
Admineiro

Masculino
Inscrito dia : 26/04/2014
Mensagens : 5723
Pontos Ativos : 7257

http://techmais.forumeiros.com/

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo


Permissão deste fórum:
Você não pode responder aos tópicos neste fórum