| 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: 11 let
|
|||
0