Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Interwał z opóźnieniem
koxu1996
post
Post #1





Grupa: Zarejestrowani
Postów: 139
Pomógł: 3
Dołączył: 5.06.2011

Ostrzeżenie: (0%)
-----


Witam. Może na początek nakreślę o co mi chodzi: mam stronę z aukcjami i w celu eliminacji opóźnień które spowodowane są pobieraniem czasu ajaxem. W tym celu zrobiłem że pobiera czas do tablicy w js i interwał zmniejsza sekudny, a ajax pobiera dane i ewentualnie poprawia jeśli czasy się różnią. Nie wiem czy jest to optymalne rozwiązanie ale próbowałem robić tak:
  1. var lagsTime
  2. setInterval(function(){update()},1000 + lagsTime);

przy czym za każdym razem jest zmieniany lagsTime. Jednak takie coś nie działa. Próbowałem też żeby funkcja wykonywała sama siebie z opóźnieniem:
  1. function update(time)
  2. {
  3. //...
  4. setTimeout(update(lagsTime), 0.1* lagsTime);
  5. lagsTime = lagsTime * 0.9;
  6. }


Jednak mimo to nie chodzi. Jak to rozwiązać? Ewentualnie może ktoś ma pomysł jak zoptymalizować wyświetlanie czasu?

Ten post edytował koxu1996 26.03.2013, 20:38:29
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
PaFaT
post
Post #2





Grupa: Zarejestrowani
Postów: 30
Pomógł: 3
Dołączył: 27.03.2012

Ostrzeżenie: (0%)
-----


Drogi koxu1996,

Po pierwsze, do takich celów interwał się nie nadaje, ponieważ nie da się zmienić czasu ustawionego w interwale.
Należy użyć timeout'u.

Funkcja update() powinna wyglądać mniej więcej następująco:

[JAVASCRIPT] pobierz, plaintext
  1. var lagsTime;
  2. function update()
  3. {
  4. //właściwa treść funkcji, w której ustawiana jest wartość zmiennej lagsTime
  5.  
  6. var timeOut = 1000 + lagsTime;
  7. window.setTimeout("update(); ", timeOut);
  8. }
[JAVASCRIPT] pobierz, plaintext


Jeśli chodzi o drugi kod, po prostu zamień linię:
setTimeout(update(lagsTime), 0.1 * lagsTime)

na:
window.setTimeout("update(" + (lagsTime * 0.9) + "); ", lagsTime * 0.1);

Powinno zadziałać...
Go to the top of the page
+Quote Post
PrinceOfPersia
post
Post #3





Grupa: Zarejestrowani
Postów: 717
Pomógł: 120
Dołączył: 18.04.2009

Ostrzeżenie: (0%)
-----


Cytat
window.setTimeout("update(" + (lagsTime * 0.9) + "); ", lagsTime * 0.1);

nie powinno się dawać stringa do setTimeout (antywzorzec), lepiej (bardziej poprawnie) wrzucić w funkcję.
Kod
setTimeout(function() { update(lagsTime * 0.9) } , lagsTime * 0.1);

taj samo w drugim zamiast
Kod
setTimeout("update(); ", timeOut);

możemy wywalić stringa i napisać:
Kod
setTimeout(update, timeOut);

oczywiście to drobiazgi, ale lubię język JavaScript i zwracam uwagę na drobiazgi wink.gif
No i window jest domyślne, nie trzeba go w takich wypadkach pisać.



--------------------
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 13:07