-
Data: 2009-01-11 15:29:28
Temat: Re: Kolejkowanie w JavaScript
Od: emil <e...@p...onet.pl> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]Krzysztof Antczak wrote:
> Witam Grupowiczów.
>
> Staram się stworzyć coś w rodzaju kolejki funkcji, który powinny się
> wykonać jedna PO drugiej. I tu pojawia się problem, ponieważ javascript
> jest bardzo oporny w kierunku ułatwienia dostępu do jakiegoś
> ReflectionAPI. Wszystkie moje pomysły zawiodły, ze względu na
> ograniczenia JS, a było tych pomysłów naprawdę sporo.
>
> Do rzeczy (przykład jednego z pomysłów):
>
> var queue = new QueueManager ();
> queue.add( 'foo' );
> queue.add( 'bar' );
> queue.add( 'function () {}' );
> queue.exec ();
>
> Niestety wygląda ładnie, a działać nie chce. Dlaczego? Dlatego, że
> istnieją w JS funkcje typu: setTimeout/setInterval, które niweczą cały
> misterny plan.
Te funkcje nie istnieją w JS, tylko są udostępniane przez obiekt window
przeglądarki. W czystym JS ich nie ma.
Na pozczątku z głupia frant zapytam co tak naprawdę chcesz zrobić,
dlatego, że przeglądarkowy JS jest z natury asynchroniczny (to znaczy
wywołanie funkcji jest z reguły odpowiedzią na jakieś zdarzenie) i
raczej nie programuje się w nim kolejek wykonania.
Nie rozumiem z jakiego powodu setTimeout/setInterval niweczą plan.Nawet
w przypadku kolejki powinieneś się nimi posłużyć,np.:
NIE:
for(var i=0;i<queue.length;i++) {
queue[i]()
}
TAK:
var intv = setInterval(function() {
if(!queue.length) {
clearInterval(intv);
return;
}
queue.pop()()
},100);
bo jeśli suma czasu wykonania Twoich funkcji będzie za długa, to
zawiesisz przeglądarke z ładnym komunikatem do usera czy chce przerwać
działania sktyptów.
Co jeszcze. JavaScript w przeglądarce jest jednowątkowy. To znaczy, że
jeśli wykonujesz jedną funkcję do czasu jej zakończenia nie uruchomi się
żadna inna funkcja niezależnie od tego czy wywołujesz ją normalnie czy
przez setTimeout.
Więc: jesteś pewien, że potrzebujesz kolejki wykonania?
IMHO raczej powinieneś inaczej podejść do problemu.
Pozdrawiam
emil
Następne wpisy z tego wątku
- 11.01.09 16:18 Krzysztof Antczak
- 12.01.09 03:00 Rafal\(sxat\)
Najnowsze wątki z tej grupy
- A Szwajcarzy kombinują tak: FinalSpark grows human neurons from stem cells and connects them to electrode arrays
- Re: Najgorszy język programowania
- NOWY: 2025-09-29 Alg., Strukt. Danych i Tech. Prog. - komentarz.pdf
- Na grupie comp.os.linux.advocacy CrudeSausage twierdzi, że Micro$lop używa SI do szyfrowania formatu dok. XML
- Błąd w Sofcie Powodem Wymiany 3 Duńskich Fregat Typu Iver Huitfeldt
- Grok zaczął nadużywać wulgaryzmów i wprost obrażać niektóre znane osoby
- Can you activate BMW 48V 10Ah Li-Ion battery, connecting to CAN-USB laptop interface ?
- We Wrocławiu ruszyła Odra 5, pierwszy w Polsce komputer kwantowy z nadprzewodzącymi kubitami
- Ada-Europe - AEiC 2025 early registration deadline imminent
- John Carmack twierdzi, że gdyby gry były optymalizowane, to wystarczyły by stare kompy
- Ada-Europe Int.Conf. Reliable Software Technologies, AEiC 2025
- Linuks od wer. 6.15 przestanie wspierać procesory 486 i będzie wymagać min. Pentium
- ,,Polski przemysł jest w stanie agonalnym" - podkreślił dobitnie, wskazując na brak zamówień.
- Rewolucja w debugowaniu!!! SI analizuje zrzuty pamięci systemu M$ Windows!!!
- Brednie w wiki - hasło Dehomag
Najnowsze wątki
- 2025-12-15 I lewacka ideologia poszła się JEBAĆ
- 2025-12-15 Zgłoszenie uprowadzenia dziecka w Koszalinie. Policja zatrzymała podejrzanych, 10-miesięczny chłopiec odnaleziony
- 2025-12-15 Warszawa => Fullstack PHP Developer <=
- 2025-12-15 Prezydent i Marszałek Sejmu
- 2025-12-15 Warszawa => Senior Frontend Developer (React + React Native) <=
- 2025-12-15 Warszawa => Sales Assistant <=
- 2025-12-15 Białystok => Programista Dynamics 365 Commerce/POS <=
- 2025-12-15 Białystok => Dynamics 365 Commerce/POS Developer <=
- 2025-12-15 Białystok => Konsultant ERP Microsoft Dynamics 365 Commerce <=
- 2025-12-15 Chanuka
- 2025-12-15 Czy w RP3 prezydent może odmówić mianowania jednego ministra z gabinetu? [Czechy]
- 2025-12-15 Czas to pieniądz...
- 2025-12-15 Wrocław => Programista React ze znajomością C++ <=
- 2025-12-14 Dla UTRWALENIA: jak działają "EKO" ZBRODNIARZE
- 2025-12-13 Emisyjność BEV




Chińskie auta: Od niskiej jakości do globalnego lidera. Co pokazuje raport EFL?