Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

"Thread" (timer) não é parada corretamente / bug do relógio avançando #7

Open
stnever opened this issue Aug 21, 2014 · 1 comment

Comments

@stnever
Copy link

stnever commented Aug 21, 2014

Em algumas situações, o relógio avança mais rápido do que deveria. Lendo o código, na linha 152 do tt.js é disparado um timer:

tt.thread = setInterval(function() {
app.showTimer(tt.time);
tt.time.timestamp = +tt.time.timestamp + 1;
}, 1000);

Esse timer só é desligado na função stopTimer(), que por sua vez é chamada apenas no pause() da app.

Uma forma melhor de lidar com isto seria: ao invés de ter um método stopTimer(), simplesmente verificar se já existe um ao chamar o setInterval():

if ( tt.thread )
clearInterval(tt.thread);

tt.thread = setInterval(function() {...})

Outra forma seria o seguinte. Suponho que a necessidade do timer é para lidar com diferenças entre o relógio "do device" e o relógio "oficial do tt". Podemos verificar a diferença entre eles na linha 150:

var offset = response.deviceInfo.dtTimeEvent.getTime() - new Date().getTime()

Depois, armazenamos este offset em uma variável privada. Dessa forma, a função que "desenha" o timer seria apenas:

app.showTimer( new Date().getTime() - offset )

e não haveria mais a necessidade de "somar 1 a cada loop do timer", que é o que está causando a variação de velocidade do timer.

OBS: Recomendo também usar o moment.js para tarefas de formatação e parse de tempo. A função showTimer() poderia ser substituída inteiramente por:

app.el("time").innerHTML = moment(time).format("HH:mm:ss");

@stnever
Copy link
Author

stnever commented Aug 21, 2014

btw: não tenho o stack pra rodar o cordova e testar, por isso não posso testar nem submeter um pull request.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant