Sobes.tech
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".