Hogyan tudok egy adott szakaszon szinkronosan futtatni javascript (és jQuery) funkciókat?
Rosszul írtam, a switch egy ciklusban van (jQuery each)...
Callback-el próbáltam, de akkor az első funkció elkezd végig menni a switch-en és eközben már hívja is meg a callback-et. Példa:
[fajl1.js]
funkcio1();
funkcio2();
[fajl2.js]
function funkcio1(){
each_ciklus{
csinalj_valamit();
}
}
function funkcio2(){
csinalj_valamit_az_elsoben_hasznalt_elemek_tulajdonsagainak_fuggvenyeben();
}
Elindul az első futása, elkezd végig menni az elemeken módosításokat végezve azokon, de elindul a 2es is és mivel az csak ellenőriz, gyorsabban fut le, mint az első. Ha az elsőnek adok callback-et, akkor elkezd lefutni a ciklus és miközben ez fut, már meghívta a callback-et.
Ha otthon leszek, megpróbálom érthetőbben leírni...
Old fel a verseny helyzetet. Iktass be sorompókat. Például.
var sorompo = FALSE;
fgv1:
... // egyéb kód
sorompo = TRUE;
...
fgv2:
... // egyéb kód
while(!sorompo) {}
... // sorompo felengedése után
Ez egy megoldás. Kicsit barbár, de vannak szebbek is.
Nézz utána: Versenyhelyzetek, Mutexek, Párhuzamos programozás
Ez nem barbár, hanem irgalmatlan gányolás.
Ilyet sose!
A sorompó nagyon rossz megoldás, mivel a javascript egy szálon fut a böngészőben, egy ilyen while ciklus megakaszthatja az egész alkalmazásod, vagy befagyhat a böngészőtab.
Ha linkelnél jsfiddle-ben egy példát, biztosan többet tudnánk segíteni.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!