Az aszinkron programozás lehetővé teszi a felhasználói interakciókat, hálózati kéréseket és más hosszadalmas műveleteket anélkül, hogy blokkolná a program futását. Az egyik aszinkron módszer a callback. A callback függvények segítségével lehetőség van arra, hogy egy művelet befejezése után meghatározott kódot hajtsunk végre. Gyakorlatilag egy függvény argumentumaként meghívunk egy másik függvényt.
Példa: Ebben a feladatban a hatvanyoz függvény a megadott kitevőre emeli a számot és a kiszámított eredményt átadja a callback függvénynek. A eredmenyKiiras függvény egy egyszerű kiírást hajt végre, kiírja a konzolra az eredményt. Amikor a hatvanyoz függvény meghívódik, a callback függvény (jelen esetben eredmenyKiiras) lefut az eredménnyel.
function hatvanyoz(szam, kitevo, callback) {
const eredmeny = Math.pow(szam, kitevo);
callback(eredmeny);
}
function eredmenyKiiras(eredmeny) {
console.log('Eredmény: ' + eredmeny);
}
hatvanyoz(2, 3, eredmenyKiiras); // Az eredményKiiras callback függvényt hívjuk meg az eredménnyel
Példa 2.: Számoljuk ki a téglalap kerületét, területét, az eredmény kiíráshoz használjunk callback-et!
function teglalapKeruletTerulet(a, b, callback) {
const kerulet = 2 * (a + b);
const terulet = a * b;
callback(kerulet, terulet);
}
function eredmenyKiiras(kerulet, terulet) {
console.log('A téglalap kerülete: ' + kerulet);
console.log('A téglalap területe: ' + terulet);
}
teglalapKeruletTerulet(5, 8, eredmenyKiiras);
Módosítsuk úgy, hogy az adatokat bekérjük:
function teglalapKeruletTerulet(callback) {
const a = parseFloat(prompt('Kérem adja meg az "a" oldal hosszát:'));
const b = parseFloat(prompt('Kérem adja meg a "b" oldal hosszát:'));
if (isNaN(a) || isNaN(b)) {
console.log('Hibás bemenet. Kérem csak számokat adjon meg az oldalhosszakhoz.');
return;
}
const kerulet = 2 * (a + b);
const terulet = a * b;
callback(kerulet, terulet);
}
function eredmenyKiiras(kerulet, terulet) {
console.log('A téglalap kerülete: ' + kerulet);
console.log('A téglalap területe: ' + terulet);
}
teglalapKeruletTerulet(eredmenyKiiras);
Az aszinkron programozással a JavaScript programok hosszan futó feladatokat indíthatnak el, és párhuzamosan folytathatnak más feladatokat. Az aszinkron programokat azonban nehéz írni, és nehéz a hibakeresés. Emiatt a legtöbb modern aszinkron JavaScript eljárás nem használ callback-et. Ehelyett a JavaScriptben az aszinkron programozást promises használatával oldják meg.
