Sobes.tech
Middle

Mit használtál a Promise megjelenése előtt?

sobes.tech MI

Válasz az MI-től

A Promise megjelenése előtt a callback-ek széles körben használatosak voltak.

A callback-ek lényege:

Egy függvény átadódik egy másik függvénynek argumentumként, és a meghatározott művelet befejezése után hajtódik végre.

Példa:

// Aszinkron művelet callback-es hívása
function fetchData(callback) {
  setTimeout(() => {
    const data = "Néhány adat";
    callback(null, data); // Az első argumentum hiba, a második az eredmény
  }, 1000);
}

fetchData((err, data) => {
  if (err) {
    console.error("Hiba az adatok lekérésekor:", err);
  } else {
    console.log("Kapott adatok:", data);
  }
});

A callback-ek kizárólagos használatának hátrányai:

  • Callback Hell (Callback pokol): A beágyazott aszinkron műveletek láncolata nagyon mély és olvashatatlan kódhoz vezet.
  • Hibakezelési nehézségek: Minden szinten át kell adni és ellenőrizni a hibákat.
  • Nem egységes megközelítés: Különböző könyvtárak különböző konvenciókat használhatnak callback-ekhez.

Alternatív megközelítések Promise előtt:

Promise megjelenése előtt, a "csupasz" callback-ek mellett, könyvtárakat és mintákat használtak az aszinkronitás kezelésére, például:

  • Aszinkron könyvtárak: Például az async (Node.js-hez, de böngészőben is használható). Segítséget nyújtottak az aszinkron folyamatok kezelésében (párhuzamos végrehajtás, szekvenciális végrehajtás).
  • Publisher/Subscriber (Pub/Sub) minta: Komplexebb interakciós forgatókönyvekhez.
  • Eseménykibocsátók: Node.js-ben és böngésző környezetben (pl. EventEmitter).

Mindazonáltal, a callback-ek továbbra is az alapját képezték sok aszinkron műveletnek. A Promise egy strukturáltabb, egységesebb és olvashatóbb módot kínált az aszinkronitással való munkára, kiküszöbölve a "Callback Hell" számos problémáját.