🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.lang.javascript
9 messages
9 total messages Started by Peter Sat, 26 Sep 2009 13:46
2x setInterval i XHR
#49404
Author: Peter
Date: Sat, 26 Sep 2009 13:46
25 lines
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
#49405
Author: MJM
Date: Mon, 28 Sep 2009 05:48
30 lines
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
#49406
Author: MJM
Date: Mon, 28 Sep 2009 05:51
28 lines
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
#49418
Author: Peter May
Date: Mon, 28 Sep 2009 08:13
30 lines
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
#49407
Author: wilq
Date: Mon, 28 Sep 2009 08:23
40 lines
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
#49411
Author: Peter May
Date: Mon, 28 Sep 2009 09:08
15 lines
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
#49413
Author: Mariusz Chwalba
Date: Mon, 28 Sep 2009 09:21
23 lines
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
#49416
Author: Peter May
Date: Mon, 28 Sep 2009 11:09
25 lines
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
#49415
Author: Mariusz Chwalba
Date: Mon, 28 Sep 2009 11:36
17 lines
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