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ų.