Thread View: pl.comp.lang.javascript
9 messages
9 total messages
Started by Peter
Sat, 26 Sep 2009 13:46
2x setInterval i XHR
Author: Peter
Date: Sat, 26 Sep 2009 13:46
Date: Sat, 26 Sep 2009 13:46
25 lines
1687 bytes
1687 bytes
Wywołuję cyklicznie dwie funkcje, każda z osobnym window.setInterval. Nazwijmy je efekt() i pobierz(). Funkcja pobierz() ma za zadanie pobrać treść z serwera i wstawić ją w element <div id="costam"></div>. Tą treścią jest zwykła lista: <ul> <li>tekst1</li> <li>tekst2</li> </ul> Natomiast funkcja efekt() daje efekt znikania jednego <li> i pojawiania się następnego (opacity). I tak non stop. Problem mam tylko taki, że jeśli zostanie wywołana funkcja efekt() i w tym czasie pobiorę treść za pomocą pobierz(), to nie wiem jak zaczekać z wstawieniem nowej treści, kiedy skończy swoje działanie funkcja efekt(). window.clearInterval(intervalID funkcji efekt()) powoduje tylko wyłączenie powtarzania się wywołania. Jak wobec tego zabezpieczyć się tak, aby wstawienie nowej treści w element <div> odbywało się na pewno wtedy, kiedy funkcja pobierz() nie działa? -- Peter
Re: 2x setInterval i XHR
Author: MJM
Date: Mon, 28 Sep 2009 05:48
Date: Mon, 28 Sep 2009 05:48
30 lines
2497 bytes
2497 bytes
Użytkownik "Peter" <peter.may@poczta.fm> napisał w wiadomości news:h9kqln$uci$1@node1.news.atman.pl... > Wywołuję cyklicznie dwie funkcje, każda z osobnym window.setInterval. Nazwijmy je efekt() i pobierz(). Funkcja pobierz() ma za > zadanie pobrać treść z serwera i wstawić ją w element <div id="costam"></div>. Tą treścią jest zwykła lista: > > <ul> > <li>tekst1</li> > <li>tekst2</li> > </ul> > > Natomiast funkcja efekt() daje efekt znikania jednego <li> i pojawiania się następnego (opacity). I tak non stop. Problem mam > tylko taki, że jeśli zostanie wywołana funkcja efekt() i w tym czasie pobiorę treść za pomocą pobierz(), to nie wiem jak zaczekać > z wstawieniem nowej treści, kiedy skończy swoje działanie funkcja efekt(). > > window.clearInterval(intervalID funkcji efekt()) powoduje tylko wyłączenie powtarzania się wywołania. > > Jak wobec tego zabezpieczyć się tak, aby wstawienie nowej treści w element <div> odbywało się na pewno wtedy, kiedy funkcja > pobierz() nie działa? > > -- > Peter Nie jestem guru ale jak dla mnie to użycie jednej z technik przy programowaniu współbieżnym by wystarczyło. Najprostsze co potrafię sobie wyobrazić to zmienna typu bool, funkcja efekt ustawia ją na false a funkcja pobierz na true. Teraz tak, leci efekt, patrzy if (!zmienna) return. Leci pobierz, pobiera i na koncu ustawia zmienna = true. Wtedy efekt wie, że już można. Pozdrawiam Michal
Re: 2x setInterval i XHR
Author: MJM
Date: Mon, 28 Sep 2009 05:51
Date: Mon, 28 Sep 2009 05:51
28 lines
2385 bytes
2385 bytes
Użytkownik "Peter" <peter.may@poczta.fm> napisał w wiadomości news:h9kqln$uci$1@node1.news.atman.pl... > Wywołuję cyklicznie dwie funkcje, każda z osobnym window.setInterval. Nazwijmy je efekt() i pobierz(). Funkcja pobierz() ma za > zadanie pobrać treść z serwera i wstawić ją w element <div id="costam"></div>. Tą treścią jest zwykła lista: > > <ul> > <li>tekst1</li> > <li>tekst2</li> > </ul> > > Natomiast funkcja efekt() daje efekt znikania jednego <li> i pojawiania się następnego (opacity). I tak non stop. Problem mam > tylko taki, że jeśli zostanie wywołana funkcja efekt() i w tym czasie pobiorę treść za pomocą pobierz(), to nie wiem jak zaczekać > z wstawieniem nowej treści, kiedy skończy swoje działanie funkcja efekt(). > > window.clearInterval(intervalID funkcji efekt()) powoduje tylko wyłączenie powtarzania się wywołania. > > Jak wobec tego zabezpieczyć się tak, aby wstawienie nowej treści w element <div> odbywało się na pewno wtedy, kiedy funkcja > pobierz() nie działa? > > -- > Peter Jeszcze doczytałem. O ile nie używasz jakichś google gears to js nie jest wielowątkowe więc chyba (mylę się?) nie jest możliwe, żę podczas wykonywania efekt będzie wykonywana pobierz. Zresztą tak jak efekt może czekać na pobierz tak i pobierz może czekać na efekt za pomocą takiego semafora. Pozdrawiam Michal
Re: 2x setInterval i XHR
Author: Peter May
Date: Mon, 28 Sep 2009 08:13
Date: Mon, 28 Sep 2009 08:13
30 lines
2457 bytes
2457 bytes
MJM pisze: > Użytkownik "Peter" <peter.may@poczta.fm> napisał w wiadomości news:h9kqln$uci$1@node1.news.atman.pl... >> Wywołuję cyklicznie dwie funkcje, każda z osobnym window.setInterval. Nazwijmy je efekt() i pobierz(). Funkcja pobierz() ma za >> zadanie pobrać treść z serwera i wstawić ją w element <div id="costam"></div>. Tą treścią jest zwykła lista: >> >> <ul> >> <li>tekst1</li> >> <li>tekst2</li> >> </ul> >> >> Natomiast funkcja efekt() daje efekt znikania jednego <li> i pojawiania się następnego (opacity). I tak non stop. Problem mam >> tylko taki, że jeśli zostanie wywołana funkcja efekt() i w tym czasie pobiorę treść za pomocą pobierz(), to nie wiem jak zaczekać >> z wstawieniem nowej treści, kiedy skończy swoje działanie funkcja efekt(). >> >> window.clearInterval(intervalID funkcji efekt()) powoduje tylko wyłączenie powtarzania się wywołania. >> >> Jak wobec tego zabezpieczyć się tak, aby wstawienie nowej treści w element <div> odbywało się na pewno wtedy, kiedy funkcja >> pobierz() nie działa? >> >> -- >> Peter > > Jeszcze doczytałem. O ile nie używasz jakichś google gears to js nie jest wielowątkowe więc chyba (mylę się?) nie jest możliwe, żę > podczas wykonywania efekt będzie wykonywana pobierz. Zresztą tak jak efekt może czekać na pobierz tak i pobierz może czekać na efekt > za pomocą takiego semafora. I dokładnie zrobiłem tak, jak opisałeś w poprzedniej wiadomości. -- Peter
Re: 2x setInterval i XHR
Author: wilq
Date: Mon, 28 Sep 2009 08:23
Date: Mon, 28 Sep 2009 08:23
40 lines
3193 bytes
3193 bytes
On 28 Wrz, 07:51, "MJM" <oj.m...@lepiej.nie.pl> wrote: > Użytkownik "Peter" <peter....@poczta.fm> napisał w wiadomościnews:h9kqln$uci$1@node1.news.atman.pl... > > > > > > > Wywołuję cyklicznie dwie funkcje, każda z osobnym window.setInterval. Nazwijmy je efekt() i pobierz(). Funkcja pobierz() ma za > > zadanie pobrać treść z serwera i wstawić ją w element <div id="costam"></div>. Tą treścią jest zwykła lista: > > > <ul> > > <li>tekst1</li> > > <li>tekst2</li> > > </ul> > > > Natomiast funkcja efekt() daje efekt znikania jednego <li> i pojawiania się następnego (opacity). I tak non stop. Problem mam > > tylko taki, że jeśli zostanie wywołana funkcja efekt() i w tym czasie pobiorę treść za pomocą pobierz(), to nie wiem jak zaczekać > > z wstawieniem nowej treści, kiedy skończy swoje działanie funkcja efekt(). > > > window.clearInterval(intervalID funkcji efekt()) powoduje tylko wyłączenie powtarzania się wywołania. > > > Jak wobec tego zabezpieczyć się tak, aby wstawienie nowej treści w element <div> odbywało się na pewno wtedy, kiedy funkcja > > pobierz() nie działa? > > > -- > > Peter > > Jeszcze doczytałem. O ile nie używasz jakichś google gears to js nie jest wielowątkowe więc chyba (mylę się?) nie jest możliwe, żę > podczas wykonywania efekt będzie wykonywana pobierz. Zresztą tak jak efekt może czekać na pobierz tak i pobierz może czekać na efekt > za pomocą takiego semafora. > > Pozdrawiam > Michal Zgadza sie w zupelnosci :) W JS nie ma wielowatkowosci, chociaz mozna ja symulowac wlasnie przez odpowiedni dobor interwalow. Tak np. robi sie animacje elementow, gdzie jednoczesnie moze byc wykonywany inny kod gdyz animacja np. co 100ms polega tylko na zmienieniu pewnego atrybutu CSS o pewna wartość. Tak czy siak... Nie ma mozliwosci ze w trakcie dzialania jednego kodu odpala sie drugi.
Re: 2x setInterval i XHR
Author: Peter May
Date: Mon, 28 Sep 2009 09:08
Date: Mon, 28 Sep 2009 09:08
15 lines
1699 bytes
1699 bytes
wilq pisze: > Zgadza sie w zupelnosci :) W JS nie ma wielowatkowosci, chociaz mozna > ja symulowac wlasnie przez odpowiedni dobor interwalow. Tak np. robi > sie animacje elementow, gdzie jednoczesnie moze byc wykonywany inny > kod gdyz animacja np. co 100ms polega tylko na zmienieniu pewnego > atrybutu CSS o pewna wartość. Tak czy siak... Nie ma mozliwosci ze w > trakcie dzialania jednego kodu odpala sie drugi. Niech ktoś poprawi mnie, jeśli się mylę. Innymi słowy JavaScript przerywa wykonywanie bieżącego kodu, skacze do kodu określonego w setInterval i wraca potem do miejsca, w którym skończył. Czy tak w uproszczeniu to wygląda? -- Peter
Re: 2x setInterval i XHR
Author: Mariusz Chwalba
Date: Mon, 28 Sep 2009 09:21
Date: Mon, 28 Sep 2009 09:21
23 lines
1989 bytes
1989 bytes
On Mon, 28 Sep 2009 11:08:38 +0200, Peter May <peter.may@poczta.fm> wrote: >> Zgadza sie w zupelnosci :) W JS nie ma wielowatkowosci, chociaz mozna >> ja symulowac wlasnie przez odpowiedni dobor interwalow. Tak np. robi >> sie animacje elementow, gdzie jednoczesnie moze byc wykonywany inny >> kod gdyz animacja np. co 100ms polega tylko na zmienieniu pewnego >> atrybutu CSS o pewna wartość. Tak czy siak... Nie ma mozliwosci ze w >> trakcie dzialania jednego kodu odpala sie drugi. > > Niech ktoś poprawi mnie, jeśli się mylę. Innymi słowy JavaScript > przerywa wykonywanie bieżącego kodu, skacze do kodu określonego w > setInterval i wraca potem do miejsca, w którym skończył. Czy tak w > uproszczeniu to wygląda? Nie. Jeżeli jakiś kod się cały czas wykonuje, to zwykle przeglądarka jest w ogóle nieresponsywna, nie wspominając już o wykonywaniu jakichkolwiek innych skryptów. setInterval dodaje jedynie zdarzenie, które wywołuje się co jakiś czas, jeżeli JS w tym czasie nic innego nie robi. pozdrawiam, -- Mariusz 'koder' Chwalba
Re: 2x setInterval i XHR
Author: Peter May
Date: Mon, 28 Sep 2009 11:09
Date: Mon, 28 Sep 2009 11:09
25 lines
2302 bytes
2302 bytes
Mariusz Chwalba pisze: > On Mon, 28 Sep 2009 11:08:38 +0200, Peter May <peter.may@poczta.fm> wrote: > >>> Zgadza sie w zupelnosci :) W JS nie ma wielowatkowosci, chociaz mozna >>> ja symulowac wlasnie przez odpowiedni dobor interwalow. Tak np. robi >>> sie animacje elementow, gdzie jednoczesnie moze byc wykonywany inny >>> kod gdyz animacja np. co 100ms polega tylko na zmienieniu pewnego >>> atrybutu CSS o pewna wartość. Tak czy siak... Nie ma mozliwosci ze w >>> trakcie dzialania jednego kodu odpala sie drugi. >> >> Niech ktoś poprawi mnie, jeśli się mylę. Innymi słowy JavaScript >> przerywa wykonywanie bieżącego kodu, skacze do kodu określonego w >> setInterval i wraca potem do miejsca, w którym skończył. Czy tak w >> uproszczeniu to wygląda? > > Nie. Jeżeli jakiś kod się cały czas wykonuje, to zwykle przeglądarka jest > w ogóle nieresponsywna, nie wspominając już o wykonywaniu jakichkolwiek > innych > skryptów. setInterval dodaje jedynie zdarzenie, które wywołuje się co jakiś > czas, jeżeli JS w tym czasie nic innego nie robi. Co znaczy "nic innego nie robi"? On zawsze "coś robi :-) -- Peter
Re: 2x setInterval i XHR
Author: Mariusz Chwalba
Date: Mon, 28 Sep 2009 11:36
Date: Mon, 28 Sep 2009 11:36
17 lines
1507 bytes
1507 bytes
On Mon, 28 Sep 2009 13:09:27 +0200, Peter May <peter.may@poczta.fm> wrote: >> Nie. Jeżeli jakiś kod się cały czas wykonuje, to zwykle przeglądarka >> jest >> w ogóle nieresponsywna, nie wspominając już o wykonywaniu jakichkolwiek >> innych >> skryptów. setInterval dodaje jedynie zdarzenie, które wywołuje się co >> jakiś >> czas, jeżeli JS w tym czasie nic innego nie robi. > > Co znaczy "nic innego nie robi"? On zawsze "coś robi :-) Znaczy "nie robi nic innego oprócz czekania na zdarzenia". pozdrawiam, -- Mariusz 'koder' Chwalba
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads