Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem Javasceipr - Oprava volání funkce s parametry

Jeste jednou, jak to cele funguje:

ty zavolas getVar('soubor.php',mojeFce); a to udela nejakou magii a v podstate se hned vrati a muzes delat neco jineho.

mezitim, na pozadi, v jinem vlaknu si getVar zije vlastnim zivotem, stahuje cosi odkudsi a po nejake blize nedefinovane chvili, dane take sviznosti internetu a milionem jinych veci, si ta getVar najednou usmysli a zavola mojeFce(status). Ta mojeFce si se statusem muze udelat co se ji zlibi - bud ho rovnou zpracovat na neco smysluplneho a skoncit, nebo ho nekam ulozit, kde si ho vezme nekdo jiny a skoncit.

Pokud s tim statusem nemas zadne okamzite umysly, tak je dobre ho plne zpracovat a vytezit v te funkci mojeFce.

Pokud mas naopak vsechno hotovo a nemuzes pokracovat, dokud nedostanes ten status, tak nechas mojeFce at ho ulozi a oznami ti to a potom uz ho mas a muzes s nim neco delat.

Pokud je to ten druhy pripad, tak ti nezbyva, nez po spusteni getVar jit do nejake formy cekani, dokud mojeFce nenastavi ten status.

Proto jsem ten while mel MIMO mojeFce za spustenim getVar

ten sleep() v mojem prikladu muze byt cokoli, co je systakticky pripustne (v pythonu bych napsal pass, v BASICu LET I=I, nebo cokoli jineho, "co nic nedela")

Samozrejme tim prichazis o vyhody paralelniho zpracovani, protoze ho prevedes umele na seriove. Ale to je asi to, co ty chces.

Zkus ten muj priklad jeste jednou, v tehle forme:

var status;
var data_ready;
data_ready=0;
var nic;

function mojeFce(hodnota) {
status = hodnota;
data_ready=1;
}

getVar('soubor.php',mojeFce);

while (data_ready==0) { nic=1; };

alert(status); // ted uz by tu data mela byt
schvalne, co to udela :)

Reakce na odpověď

1 Zadajte svou přezdívku:
2 Napište svou odpověď:
3 Pokud chcete dostat ban, zadejte libovolný text:

Zpět do poradny