![]() |
![]() ![]() |
![]() |
![]() ![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 10 Pomógł: 0 Dołączył: 21.07.2010 Ostrzeżenie: (0%) ![]() ![]() |
Witam. Chciałbym zrobić sobie funkcje która będzie mi się powtarzała co jakiś czas ( w tym wypadku co sekundę )
To mój wstępny kod: Kod w pewnym stopniu działa, ale "zamula" stronę w przeglądarce google chrome.... Bardzo bym prosiło o zoptymalizowanie kodu! ![]() Ten post edytował zgred1010 2.07.2011, 22:55:57 |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 2 350 Pomógł: 512 Dołączył: 4.01.2009 Skąd: Wrocław / Świdnica Ostrzeżenie: (0%) ![]() ![]() |
Od tego jest setInterval - https://developer.mozilla.org/En/window.setInterval
Jak nadal będzie zamulać to napisz coś więcej, dużo więcej ![]() ![]() --edit-- Nie znam dobrze jQuery, stąd potrzebuje dokładniejszego opisu z Twojej strony to może coś wymyślimy ![]() Sprawdź jak to się ma pod innymi przeglądarkami Ten post edytował kamil4u 2.07.2011, 22:47:14 -------------------- |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 116 Pomógł: 29 Dołączył: 13.12.2010 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Kolega wyżej ma rację - setInterval(). W dodatku dałbym maksimum 5-10 sekund, nawet więcej, ale nie jedną. Nic dziwnego, że zamula, jak w kółko mieli requesty.
-------------------- "Aby zrozumieć rekurencję, musisz najpierw zrozumieć rekurencję."
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 2 350 Pomógł: 512 Dołączył: 4.01.2009 Skąd: Wrocław / Świdnica Ostrzeżenie: (0%) ![]() ![]() |
Cytat W dodatku dałbym maksimum 5-10 sekund, nawet więcej, ale nie jedną. Chyba minimum ![]() Cytat Nic dziwnego, że zamula, jak w kółko mieli requesty. Moim zdaniem to nic takiego ![]() -------------------- |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 116 Pomógł: 29 Dołączył: 13.12.2010 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Tak, minimum, przejęzyczyłem się.
Przy niektórych serwerach ma to znaczenie dla przeglądarki. Jeśli serwer odpowiada dłużej niż jedną sekundę, to requesty nakładają się, przeglądarka zajmuje się kilkoma naraz, wszystko się piętrzy, a przeglądarka może mulić. Należy pamiętać, że $.ajax() jest asynchroniczne. Może jednak lepiej zostawić to z setTimeout(), ale dać je dopiero, kiedy poprzednie żądanie się zakończy: -------------------- "Aby zrozumieć rekurencję, musisz najpierw zrozumieć rekurencję."
|
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 2 350 Pomógł: 512 Dołączył: 4.01.2009 Skąd: Wrocław / Świdnica Ostrzeżenie: (0%) ![]() ![]() |
Wątpię, żeby tak było - moim zdaniem "pomuli" i wszystko wróci do normy. Niestety nie mam dowodu na poparcie tych słów, a żadnych testów nie chce mi się robić(możliwe, że się mylę). AJAX nie musi być asynchroniczny (np. w jquery(jeżeli już z tego korzystamy) parametr async).
Kod, który podałeś też jest ok, ale jak mówiłem, moim zdaniem to nie wina samej funkcjonalności opóźnień, a kodu założyciela tematu. Poczekajmy, aż ~zgred1010 skorzysta z naszych rad i zobaczymy jak to wszystko będzie funkcjonowało ![]() Pozdrawiam -------------------- |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 116 Pomógł: 29 Dołączył: 13.12.2010 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Możesz mieć rację, ale i tak staram się unikać takiego bombardowania serwera. Zwłaszcza przy dużej liczbie userów.
A co do asynchronicznego jQuery: http://api.jquery.com/jQuery.ajax/ Cytat Description: Perform an asynchronous HTTP (Ajax) request. Cytat async
Default: true -------------------- "Aby zrozumieć rekurencję, musisz najpierw zrozumieć rekurencję."
|
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 2 350 Pomógł: 512 Dołączył: 4.01.2009 Skąd: Wrocław / Świdnica Ostrzeżenie: (0%) ![]() ![]() |
Ja też nie
![]() ![]() Z tym async to miało być po prostu pokazanie/przypomnienie Ci, że jest taka możliwość ![]() -------------------- |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 10 Pomógł: 0 Dołączył: 21.07.2010 Ostrzeżenie: (0%) ![]() ![]() |
Jest połowa sukcesu ![]() z małym ALE... Strona się wczytała (pod względem treści i grafiki) ale cały czas pokazuje stan wczytywania (jeśli chodzi o Google chrome / na innych nie sprawdzałem jeszcze) Czytałem wszystkich posty... 1 sekunda to w fazie testu... tylko ja mam dostęp póki co do strony... Z tego co mi wiadomo to strona będzie miała minimalnie 10 000 odwiedzin dziennie.... Więc sądze że ustawie to na 2-3 minuty.... Jeśli sądzicie że są lepsze funkcje to śmiało mnie informujcie! Ja się na jQuery dużo nie znam i się uczę... Ps.: Jeśli kogoś interesuje to skrypt będzie sprawdzał na żywo czy użytkownik nie ma wiadomości nowych... więc w pliku messages.php jest zliczanie nieprzeczytanych wiadomości... |
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 116 Pomógł: 29 Dołączył: 13.12.2010 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Ugh, to mamy tu poważne zapętlenie.
setInterval() wywołuje się raz, a funkcja ta powoduje cykliczne wykonywanie określonej instrukcji. Zlecasz raz i koniec. setTimeout() wykonuje instrukcję jednokrotnie po określonym upływie czasu. Jeśli na początku wywołujesz setInterval(), a później jeszcze przy każdym pobraniu danych, to może być niezły pasztet. Masz dwa wyjścia:
-------------------- "Aby zrozumieć rekurencję, musisz najpierw zrozumieć rekurencję."
|
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 10 Pomógł: 0 Dołączył: 21.07.2010 Ostrzeżenie: (0%) ![]() ![]() |
ok sprawdzę
![]() ![]() Panowie ;] panie ![]() Udało się ![]() ![]() ![]() Usunąłem po wykonaniu zadania funkcje setInterval() i w
zmieniłem check_mess() na check_mess Wszystko działa ![]() Teraz śmigam robić facebooka ;] dzięki wielkie ![]() |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 715 Pomógł: 47 Dołączył: 5.12.2010 Ostrzeżenie: (0%) ![]() ![]() |
Nie wiem czemu nikt,tego nie używa:
var $jq=jQuery.noConflict(); i zamiast $(document).ready(function(){ użyć: $jq(document).ready(function(){ Niech Pan włączy firebuga i zobaczy Pan błędy typu ala,że $ nie jest zdefiniowana" |
|
|
![]()
Post
#13
|
|
![]() Grupa: Zarejestrowani Postów: 2 350 Pomógł: 512 Dołączył: 4.01.2009 Skąd: Wrocław / Świdnica Ostrzeżenie: (0%) ![]() ![]() |
@Rid - noConflict używa się w przypadku korzystania z 2 lub więcej bibliotek,w której to znajduje się funkcja "$" - w tym wypadku chyba to nie następuje, więc Twoja rada wydaje się zbyteczna.
Cytat Niech Pan włączy firebuga i zobaczy Pan błędy typu ala,że $ nie jest zdefiniowana" Gdy nigdzie indziej nie występuje inna funkcja "$", takie błędu nie będzie. PS. Na forum mamy zwyczaj mówienia sobie na 'ty'. -------------------- |
|
|
![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 715 Pomógł: 47 Dołączył: 5.12.2010 Ostrzeżenie: (0%) ![]() ![]() |
Tak,wiem to ,ale jak projekt ,stronka się rozrośnie i zostanie np dodany jakikolwiek zewnętrzny plik js.Jakiś plugin jq,skrypt z elementami jq to trzeba będzie wtedy przerabiać,to nie lepiej od razu jest tego użyć ,niż potem bawić się w przerabianie.
|
|
|
![]()
Post
#15
|
|
Grupa: Zarejestrowani Postów: 10 Pomógł: 0 Dołączył: 21.07.2010 Ostrzeżenie: (0%) ![]() ![]() |
z innych bibliotek nie korzystam
![]() ![]() |
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 10:27 |