Sobes.tech
Middle

Co jste používali před příchodem Promise?

sobes.tech AI

Odpověď od AI

Před zavedením Promise byly callbacky široce používány.

Podstata callbacků:

Funkce je předána jiné funkci jako argument a je vykonána po dokončení určité operace.

Příklad:

// Příklad volání asynchronní operace s callbackem
function fetchData(callback) {
  setTimeout(() => {
    const data = "Nějaká data";
    callback(null, data); // První argument je chyba, druhý je výsledek
  }, 1000);
}

fetchData((err, data) => {
  if (err) {
    console.error("Chyba při načítání dat:", err);
  } else {
    console.log("Přijatá data:", data);
  }
});

Nevýhody používání pouze callbacků:

  • Callback Hell (peklo callbacků): Řetězec vnořených asynchronních operací vede k velmi vnořenému a těžko čitelnému kódu.
  • Těžkosti s chybovou kontrolou: Je nutné předávat a kontrolovat chyby na každé úrovni vnoření.
  • Chybějící standardizovaný přístup: Různé knihovny mohly používat různé konvence pro callbacky.

Alternativní přístupy před Promise:

Před zavedením Promise se kromě "čistých" callbacků používaly knihovny a vzory pro správu asynchronnosti, například:

  • Asynchronní knihovny: Například async (pro Node.js, ale i v prohlížeči). Nabízely nástroje pro správu asynchronních toků (paralelní provádění, sekvenční provádění).
  • Vzor Publisher/Subscriber (Pub/Sub): Pro složitější scénáře interakce.
  • Emitery událostí: V Node.js a v prostředí prohlížeče (například EventEmitter).

Nicméně callbacky zůstávaly základem pro mnoho asynchronních operací. Promise poskytly strukturovanější, sjednocenější a čitelnější způsob práce s asynchronností, čímž odstranily řadu problémů "Callback Hell".