Sobes.tech
Middle

Ką naudojote prieš Promise atsiradimą?

sobes.tech AI

Atsakymas iš AI

Prieš pasirodant Promise, plačiai naudoti buvo kaskadiniai funkcijos (callbacks).

Kaskadinių funkcijų esmė:

Funkcija perduodama kitai funkcijai kaip argumentas ir vykdoma po tam tikros operacijos pabaigos.

Pavyzdys:

// Asinchroninės operacijos kvietimo pavyzdys su callback
function fetchData(callback) {
  setTimeout(() => {
    const data = "Some data";
    callback(null, data); // Pirmas argumentas - klaida, antras - rezultatas
  }, 1000);
}

fetchData((err, data) => {
  if (err) {
    console.error("Klaida gaunant duomenis:", err);
  } else {
    console.log("Gauti duomenys:", data);
  }
});

Naudojant callbacks trūkumai:

  • Callback Hell (Callback pragaras): Gilių ir sunkiai skaitomų asinchroninių operacijų seka.
  • Klaidų tvarkymo sudėtingumas: Reikia perduoti ir tikrinti klaidas kiekviename lygyje.
  • Standartizuoto požiūrio trūkumas: Skirtingos bibliotekos galėjo naudoti skirtingus susitarimus callbacks.

Alternatyvos iki Promise:

Prieš pasirodant Promise, be "švarių" callbacks, naudotos bibliotekos ir modeliai asinchroniškumo valdymui, tokie kaip:

  • Asinchroninės bibliotekos: Pavyzdžiui, async (skirta Node.js, bet galėjo būti naudojama ir naršyklėje). Teikė įrankius asinchroninių srautų valdymui (paralelinis vykdymas, sekos vykdymas).
  • Publisher/Subscriber (Pub/Sub) modelis: Sudėtingesniems sąveikos scenarijams.
  • Įvykių emitentai: Node.js ir naršyklės aplinkoje (pvz., EventEmitter).

Nepaisant to, callbacks liko daugelio asinchroninių operacijų pagrindu. Promise suteikė labiau struktūruotą, vieningą ir skaitomą būdą dirbti su asinchroniškumu, išsprendžiant daugelį "Callback Hell" problemų.