Předmět Autor Datum
Zkus tohle: show(){ var self = this. setTimeout ( function (){ return self.test(); },100); }…
Pavel 13.10.2019 14:31
Pavel
Díky, a má tam být var self = this. nebo var self = this; s tím středníkem na konci to funguje, ale…
zacatecnickej 13.10.2019 14:45
zacatecnickej
Se středníkem. Nefunguje to, protože this uvnitř funkce se vztahuje na tu funkci.
Wikan 13.10.2019 15:11
Wikan
Díky, this které patří funkci? this se přeci používá jen ve třídách, ne? nový
zacatecnickej 13.10.2019 19:30
zacatecnickej
Ano, ale v setTimeout mas (bezejmennou) funkci, ktera zadne tride nepatri (neni jeji metodou) a tak… nový
gilhad 14.10.2019 02:13
gilhad
this se v JS používal dávno před tím, než zavedli třídy (rok 2015). nový
Wikan 14.10.2019 10:24
Wikan
Jo, patří tam středník, blbě jsem to napsal. Přímo to nefunguje kvůli rozdílnýmu scope. Ještě by t…
Pavel 13.10.2019 17:20
Pavel
Díky ale PURE JS tuto funkci nezná :( bind(this);
zacatecnickej 13.10.2019 19:28
zacatecnickej
Ale zná. Je je to potřeba napsat na správný místo. class Foo { test() { console.log('bar'); } show(… nový
Wikan 13.10.2019 19:36
Wikan
Ha! Díky za opravu; já to moc nepoužívám, tak jsem se netrefil. nový
Pavel 13.10.2019 21:00
Pavel
Díky. Ta funkce stejně funguje nějak jinak než bych chtěl, pokud zadám setTimeout(function (){ con… nový
zacatecnickej 14.10.2019 12:34
zacatecnickej
Ale funguje to tak, jak to fungovat má. Pomocí setTimeout() nastavíš, za jaký čas se má funkce vykon… nový
Pavel 14.10.2019 14:03
Pavel
Našly by se i jiný způsoby: https://stackoverflow.com/questions/33289726/combination-of-async-functi… poslední
Wikan 14.10.2019 14:25
Wikan

Ano, ale v setTimeout mas (bezejmennou) funkci, ktera zadne tride nepatri (neni jeji metodou) a tak zadne this pri svem volani nedostava. this neni skutecna prommena, neni nikde deklarovana, nikde se ji neprirazuje hodnota - je to jen jazykova konstrukce. Tim, ze te funkci das skutecnou promennou s prirazenou hodnotou tohle obejdes :)

Díky.
Ta funkce stejně funguje nějak jinak než bych chtěl, pokud zadám


setTimeout(function (){
console.log('prvni');
}, 1000);
console.log('druha');

vypíše se v logu
druha
prvni

jako by ta funkce nečekala až se provede, jde to nějak nastavit? Až se provede celý kód uvnitř setTimeout() tak pokračuj? Díky

Ale funguje to tak, jak to fungovat má. Pomocí setTimeout() nastavíš, za jaký čas se má funkce vykonat a program pokračuje dál. Hledáš asi něco jako delay(), ale to v JS nenajdeš.

Zpoždění můžeš simulovat velkou smyčkou, prázdnej for cyklus, ale ani náhodou neodhadneš kolik průchodů je potřeba na 1 s. Na každým PC to bude jinak, i na stejným PC to bude jinak v závislost na vytížení procesoru.

Zpět do poradny Odpovědět na původní otázku Nahoru