Autor Zpráva
sakalik
Profil *
je javascript thread safe - mam globalnu premenu a pristupujem k nej v dvoch funkciach kt. su vyvolane udalostou
napr

var g;
function f1()
{
g=1;
//nieco pracujem s g, volam dalsie f kt pracuju s g
g=0;
}
function f2()
{
g=2;
//nieco s g, volam dalsie f kt pracuju s g
g=0;
}

a ide o to ci sa moze stat ze bude zavolana f1 a potom f2 (udalostami) a v f2 sa mi objavy g==1

- vcelku ide o to ci javascript je v jednom vlakne alebo vo viacerych

-pls nech odpoved pouzivaj g1 a g2 alebo na co ti to je atd
sakalik
Profil *
sorry za posled. riadok
-pls nechcem odpoved - pouzivaj g1 a g2 alebo na co ti to je, atd
ah01
Profil
Veškerý JS kód v prohlížeči běží v jednom vlákně. Takže ano, je thread safe.
v6ak
Profil
Pokud by běžel v jednom vlákně, nebylo by možné setTimeout(....);, ne?
ah01
Profil
„Pokud by běžel v jednom vlákně, nebylo by možné setTimeout(....);, ne?“
nebo „Pokud by běžel v jednom vlákně, nebylo by možné události, ne?“

Jde o to, že událost zajišťuje prohlížeč a ten pak volá obsluhu v JS, pokud ale JS engine něco v tu chvíli dělá, čeká prohlížeč, až to dodělá.

Já netvrdím, že celý prohlížeč běží v jednom vlákně, ale že JS engine je jen jedno vlákno. To jak k němu přistupuje prohlížeč, je jiná věc. A IMHO FF a Opera to dělá nejspíš nepatrně jinak (viz tvůj druhý dotaz)
v6ak
Profil
ah01
Jde o to, že událost zajišťuje prohlížeč a ten pak volá obsluhu v JS, pokud ale JS engine něco v tu chvíli dělá, čeká prohlížeč, až to dodělá.
Aha, tak to je fajn.

A IMHO FF a Opera to dělá nejspíš nepatrně jinak (viz tvůj druhý dotaz)
Proč, Opera počkala a potom to provedla (oprava), FF (a IE) se na druhé stisknutí vykašlal úplně, takže z toho bych toto neusuzoval.
ah01
Profil
v6ak
Jestli to chápu dobře, tak Opera během toho čekání dovolí uživateli dál pracovat se stránku (události sype asi do nějaké fronty), kdežto FF a IE „zamrznou“.

Nikdy jsem s tímhle moc nelaboroval, jen vím, že Opera se v některých věcech chová jinak než všichni ostatní, je ale otázka jestli lépe nebo hůře.
v6ak
Profil
ah01
Jasně, nějak tak to taky vidím, ale třeba u timeoutu to podle mě budou do fronty sypat všichni. U kliku může být lepší to ignorovat kvůli nedočkavým uživatelům, kteří kliknou několikrát a potom se diví, až se "vysype" fronta...
Toto téma je uzamčeno. Odpověď nelze zaslat.