Sobes.tech
Middle

Šta ste koristili pre pojave Promise?

sobes.tech АИ

Одговор од АИ

Pre nego što je pojavio Promise, callback-ovi su široko korišćeni.

Suština callback-ova:

Funkcija se prosleđuje drugoj funkciji kao argument i izvršava nakon završetka određene operacije.

Primer:

// Primer poziva asinhrone operacije sa callback-om
function fetchData(callback) {
  setTimeout(() => {
    const data = "Neki podaci";
    callback(null, data); // Prvi argument je greška, drugi je rezultat
  }, 1000);
}

fetchData((err, data) => {
  if (err) {
    console.error("Greška pri dobijanju podataka:", err);
  } else {
    console.log("Primljeni podaci:", data);
  }
});

Nedostaci korišćenja samo callback-ova:

  • Callback Hell (Pakao callback-ova): Lanac uvučenih asinhronih operacija vodi do veoma uvučenog i teško čitljivog koda.
  • Teškoće u obradi grešaka: Potrebno je prosleđivati i proveravati greške na svakom nivou.
  • Nedostatak standardizovanog pristupa: Različite biblioteke mogle su koristiti različite konvencije za callback-ove.

Alternativni pristupi pre Promise:

Pre pojave Promise, pored "čistih" callback-ova, koristile su se biblioteke i obrasci za upravljanje asinhronim operacijama, kao što su:

  • Asinhrone biblioteke: Na primer, async (za Node.js, ali i za browser). Obuhvatale su alate za upravljanje asinhronim tokovima (paralelno izvršavanje, sekvencijalno izvršavanje).
  • Publisher/Subscriber (Pub/Sub) obrazac: Za složenije scenarije interakcije.
  • EventEmitter: U Node.js i browser okruženjima (npr. EventEmitter).

Ipak, callback-ovi su ostali osnova za mnoge asinhrone operacije. Promise je pružio strukturiraniji, ujednačeniji i čitljiviji način rada sa asinhronošću, rešavajući mnoge probleme "Callback Hell".