Autor | Zpráva | ||
---|---|---|---|
Babak Profil * |
#1 · Zasláno: 3. 10. 2014, 17:04:45
V js zobrazuji prvek
function sleep(milliseconds) { var start = new Date().getTime(); for (var i = 0; i < 1e7; i++) { if ((new Date().getTime() - start) > milliseconds){ break; } } } $('#prvek').css("display","blok-inline"); sleep(3000); //zde chci pozdržet jeho zobrazeni $('#prvek').css("display","none"); alet('HOTOVO'); Problém je v tom, že daný prvek se ihned nezobrazí, ale jen problikne až potom sleep (jako by se nestihl vykreslit). Kde je prosím chyba? Dik za radu |
||
Fisir Profil |
Reaguji na Babaka:
Co je to za blbost? Normálně: setTimeout(function(){ $('#prvek').css("display","none"); alet('HOTOVO'); }, 3000); |
||
Radek9 Profil |
#3 · Zasláno: 4. 10. 2014, 10:43:43
Babak:
Webové aplikace (a obecně JavaScript aplikace) většinou běží na jednom vlákně. Tímhle úspěšně blokneš celé vlákno, takže se to ani nemůže vykreslit. Tyhle věci se v JS dělají zásadně asynchroně. Tzn. buď pomocí callbacků ([#2]), nebo třeba pomocí promise-patternu. Musíš ale počítat s tím, že akce, které mají následovat po té asynchronní akci, musíš taktéž umístit do onoho callbacku. |
||
Časová prodleva: 10 let
|
0