D3.js - API Timer

O módulo Timer API é usado para executar as animações simultâneas com atraso de tempo sincronizado. UsarequestAnimationFramepara animação. Este capítulo explica o módulo Timer API em detalhes.

requestAnimationFrame

Este método informa ao navegador que você deseja executar uma animação e solicita que o navegador chame uma função especificada para atualizar uma animação.

Configurando o cronômetro

Podemos carregar facilmente o cronômetro diretamente do d3js.org usando o seguinte script.

<script src = "https://d3js.org/d3-timer.v1.min.js"></script>
<script>
   var timer = d3.timer(callback);
</script>

Métodos da API Timer

A API Timer oferece suporte aos seguintes métodos importantes. Tudo isso é explicado em detalhes a seguir.

d3.now ()

Este método retorna a hora atual.

d3.timer (callback [, delay [, time]])

Este método é usado para agendar um novo cronômetro e invoca o cronômetro até ser interrompido. Você pode definir um atraso numérico no MS, mas é opcional, caso contrário, o padrão é zero. Se o tempo não for especificado, ele será considerado d3.now ().

timer.restart (callback [, delay [, time]])

Reinicie um cronômetro com o retorno de chamada especificado e atraso e tempo opcionais.

timer.stop ()

Este método interrompe o cronômetro, evitando retornos de chamada subsequentes.

d3.timeout (callback [, delay [, time]])

Ele é usado para parar o cronômetro em seu primeiro retorno de chamada. O retorno de chamada é passado como o tempo decorrido.

d3.interval (callback [, delay [, time]])

Ele é chamado em um determinado intervalo de tempo. Se o atraso não for especificado, leva o tempo do cronômetro.

Exemplo

Crie uma página da web “timer.html” e adicione o seguinte script a ela.

<!DOCTYPE html>
<html>
   <head>
      <script type = "text/javascript" src = "https://d3js.org/d3.v4.min.js"></script>
   </head>

   <body>
      <h3> Timer API </h3>
      <script>
         var timer = d3.timer(function(duration) {
            console.log(duration);
            if (duration > 150) timer.stop();
         }, 100);
      </script>
   </body>
</html>

Veremos a seguinte resposta na tela.