Obsah
Callback
Callback je funkce, která je předána jako argument jiné funkci a je vykonána později, obvykle po dokončení určité operace nebo při vzniku konkrétní události. Callbacky jsou důležitou součástí Asynchronous Programming a Event-Driven Programming.
Používají se zejména v jazyce JavaScript: Kompletní monografie od A do Z, ale lze se s nimi setkat i v mnoha dalších programovacích jazycích.
Jak Callback funguje
Namísto okamžitého vykonání funkce je funkce předána jiné části programu, která ji zavolá ve vhodný okamžik.
Funkce A ↓ Předá Callback ↓ Proběhne operace ↓ Callback je spuštěn
Jednoduchý příklad
function pozdrav() { console.log("Ahoj!"); } function provedAkci(callback) { callback(); } provedAkci(pozdrav);
Výstup:
Ahoj!
Funkce pozdrav() je předána jako callback a vykonána uvnitř funkce provedAkci().
Anonymní Callback
Velmi často se používají anonymní funkce:
setTimeout(function() { console.log("Čas vypršel."); }, 1000);
Po uplynutí jedné sekundy je callback automaticky spuštěn.
Callback a události
Callbacky jsou běžnou součástí práce s událostmi.
button.addEventListener("click", function() { console.log("Kliknutí."); });
Anonymní funkce zde představuje callback, který se spustí při události click.
Callback a asynchronní operace
Při načítání dat nebo práci se soubory se callback vykoná až po dokončení operace.
Příklad:
nactiData(function(data) { console.log(data); });
Program mezitím může pokračovat v dalších činnostech.
Callback Hell
Při větším počtu vnořených callbacků může vzniknout problém známý jako Callback Hell.
Příklad:
akce1(function() { akce2(function() { akce3(function() { akce4(function() { }); }); }); });
Takový kód je obtížně čitelný a složitě se udržuje.
Moderní alternativa
V moderním JavaScriptu se callbacky často nahrazují pomocí:
Příklad s Promise:
fetch("/data") .then(response => response.json()) .then(data => console.log(data));
Výhody
Jednoduchý princip. Podpora asynchronních operací. Efektivní práce s událostmi. Nízké nároky na výkon.
Nevýhody
Při větším množství callbacků vzniká nepřehledný kód. Obtížnější ladění chyb. Horší čitelnost u složitějších aplikací.
Oblasti použití
Zpracování událostí. Síťová komunikace. Časovače. Práce se soubory. API požadavky. Animace. Asynchronní operace.
Související pojmy
Event Event Handler Event Loop event listener Asynchronous Programming promise async await JavaScript: Kompletní monografie od A do Z Node.js
Shrnutí
Callback je funkce předaná jiné funkci za účelem jejího pozdějšího vykonání. Callbacky tvoří základ práce s událostmi a asynchronními operacemi v JavaScriptu i dalších programovacích jazycích. Přestože jsou stále široce používány, u složitějších aplikací jsou často nahrazovány technologiemi Promise a Async/Await, které nabízejí přehlednější zápis kódu.
