Avatar
Pavel Vosyka
Člen
Avatar
Pavel Vosyka:

Ahoj,
nevím jak ten problém pojmenovat, ale dost mě to teď trápí.. takže:

<div id="div1" onclick="zmena();">Klikni na mně!</div>
<div id="div2"></div>
<script>
function zmena(){
    var text ='Jak to že to tak trvá?';
    $('#div1').text(text);
    console.log(text);
    druha();
}
function druha(){
    var i=0;
    //alert('mneco');
    while(i<50000){
    i++;
        $('#div2').text(i);
        console.log(i);
    }
}
</script>

Kliknutím spustím fci zmena. Očekávám, že bude pěkně postupně vykonávat co tam je psáno. Takže zaprvé má vypsat text do div1 - to zatím neudělá a jede dál - zapíše text do konzole, spustí druhou fci. Ta je trošinku náročná - má do druhého divu vypisovat postupně až 1 až 5000 a také zapsat do konzole.

Výstup konzole je v pohodě, tak jak má být:

  • Jak to že to tak trvá?
  • 1
  • 2

...

  • 5000

Jenže na obrazovce skript čeká a čeká... pak vypíše jenom těch konečnejch 5000 a text najednou (?!).

Jenže, když do druhé fce napíšu ten zakomentovaný alert tak se ta první změna - to vypsaní textu projeví... a až pak nabíhá těch 1-5000 (sice né postupně). Je tu někdo kdo by mi vysvětlil proč to tak je? A jak to udělat aby se to vypisovalo postupně? Díky

Odpovědět 3.4.2013 19:40
"nikdy nepiš nic 2x"
Avatar
Drahomír Hanák
Tým ITnetwork
Avatar
Odpovídá na Pavel Vosyka
Drahomír Hanák:

Stavové bloky příkazů, jako jsou while nebo for, se vykonávají najednou. Musíš nastavit nějaký interval (aby např. po 1s změnil text na i+1) a to se dělá pomocí setInterval();

 
Nahoru Odpovědět  +1 3.4.2013 20:05
Avatar
Pavel Vosyka
Člen
Avatar
Pavel Vosyka:

No mám funckci, která stahuje JSON z instagramu (20 fotek) a dokud v tom JSONu je more_avaliable = true, stahuje další díl fotek takže to dělám pomocí while. Jakmile ho stáhne tak ho naparsuje a jednotlivé odkazy na obrázky vkládá do pole "obrázky", takže zatímco ten blok příkazů běží a pole se naplňuje já potřebuji vykreslovat něco na základě toho pole: for(var item in obrázky{třeba vykresli obrázek} ... Takže bych to měl řešit tak, že intervalem třeba každou 1s to budu vykreslovat z toho pole, do kterého se pak budou sypat ty odkazy z funkce, kterou spustím nějakým onClickem, jo?

Nahoru Odpovědět 3.4.2013 22:22
"nikdy nepiš nic 2x"
Avatar
Odpovídá na Pavel Vosyka
Michael Olšavský:

Přesně tak! :) Místo cyklu while nastav intervalu funkci, která právě stáhne jednu fotku a tu poté zobrazí. Klidně to může být interval menší než 1s (počet se zadává v milisekundách).

 
Nahoru Odpovědět  +1 6.4.2013 16:10
Avatar
Pavel Vosyka
Člen
Avatar
Odpovídá na Drahomír Hanák
Pavel Vosyka:

Teď jsem se taky dost opozdil, každopádně díky, teď to valí jak chci.. Vůbec mě to s těma intervalama nenapadlo, a je to skvělé..

Nahoru Odpovědět 18.4.2013 23:41
"nikdy nepiš nic 2x"
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 5 zpráv z 5.