Middle
Čo ste používali pred príchodom Promise?
sobes.tech AI
Odpoveď od AI
Pred zavedením Promise boli callbacky široko používané.
Podstata callbackov:
Funkcia sa odovzdá inej funkcii ako argument a vykoná sa po dokončení určitej operácie.
Príklad:
// Príklad volania asynchrónnej operácie s callbackom
function fetchData(callback) {
setTimeout(() => {
const data = "Niektoré údaje";
callback(null, data); // Prvý argument je chyba, druhý je výsledok
}, 1000);
}
fetchData((err, data) => {
if (err) {
console.error("Chyba pri načítaní údajov:", err);
} else {
console.log("Prijaté údaje:", data);
}
});
Nevýhody používania iba callbackov:
- Callback Hell (peklo callbackov): Reťazec vložených asynchrónnych operácií vedie k veľmi vloženému a ťažko čitateľnému kódu.
- Ťažkosti pri spracovaní chýb: Je potrebné odovzdávať a kontrolovať chyby na každej úrovni.
- Chýba štandardizovaný prístup: Rôzne knižnice mohli používať rôzne konvencie pre callbacky.
Alternatívne prístupy pred Promise:
Pred zavedením Promise sa okrem "čistých" callbackov používali knižnice a vzory na správu asynchrónnosti, ako napríklad:
- Asynchrónne knižnice: Napríklad
async(pre Node.js, ale aj v prehliadači). Poskytovali nástroje na správu asynchrónnych tokov (paralelné vykonávanie, sekvenčné vykonávanie). - Vzor Publisher/Subscriber (Pub/Sub): Pre zložitejšie scenáre interakcie.
- EventEmitter: V Node.js a v prostredí prehliadača (napríklad
EventEmitter).
Napriek tomu callbacky zostávali základom pre mnoho asynchrónnych operácií. Promise poskytli štruktúrovanejší, zjednotený a čitateľnejší spôsob práce s asynchrónnosťou, čím odstránili mnohé problémy "Callback Hell".