Autor Zpráva
Babak
Profil *
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
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.

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: