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:
- Pending: A művelet még folyamatban van.
- Fulfilled: A művelet sikeresen befejeződött (értékkel tért vissza).
- Rejected: A művelet hiba miatt meghiúsult.
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));