Az aszinkron JavaScript alapjai: A Callback Pokoltól a Promise-okig

A JavaScript egyszálú (single-threaded) programozási nyelv, ami azt jelenti, hogy egyszerre csak egy műveletet tud végrehajtani. Ez komoly problémát jelentene a hálózati kérések (pl. API hívások) vagy fájlrendszer-műveletek során, hiszen a hálózat lassúsága miatt a teljes felhasználói felület megfagyna.

A probléma kezelésére a JavaScript aszinkron műveleteket használ. Régebben ezt kizárólag visszahívási függvényekkel (callbacks) oldották meg. Azonban ha több egymásra épülő aszinkron kérést kellett kezelni, a kód gyorsan átláthatatlanná vált, ezt hívja a szakma "Callback Pokolnak" (Callback Hell).

A Promise objektumok forradalma

A Callback Pokol felszámolására vezették be a Promise (Ígéret) objektumot. A Promise egy jövőbeli érték reprezentációja, amely három állapotban létezhet:

const adatBetoltes = () => {
    return new Promise((resolve, reject) => {
        const sikeres = true;
        setTimeout(() => {
            if (sikeres) {
                resolve({ user: "Péter", status: "aktív" });
            } else {
                reject("Szerver hiba történt!");
            }
        }, 1500);
    });
};

adatBetoltes()
    .then(adat => console.log("Sikeres adat le kérve:", adat))
    .catch(hiba => console.error("Hiba:", hiba));