Middle
Mida kasutasite enne Promise'i ilmumist?
sobes.tech AI
Vastus AI-lt
Enne Promise'i laiem widespread kasutamist kasutati laialdaselt tagasihelistusi (callbacks).
Tagasihelistuste olemus:
Funktsioon antakse teisele funktsioonile argumendina ja see täidetakse pärast teatud operatsiooni lõpetamist.
Näide:
// Asünkroonse operatsiooni väljakutse näide tagasihelistusega
function fetchData(callback) {
setTimeout(() => {
const data = "Some data";
callback(null, data); // Esimene argument - viga, teine - tulemus
}, 1000);
}
fetchData((err, data) => {
if (err) {
console.error("Viga andmete saamisel:", err);
} else {
console.log("Andmed saadud:", data);
}
});
Tagasihelistuste kasutamise puudused:
- Callback Hell (Tagasihelistuste põrgu): Sisemiste asünkroonsete operatsioonide jada viib sügava ja raskesti loetava koodini.
- Vigade töötlemise keerukus: Vajalik on vigade edastamine ja kontroll igal tasandil.
- Standardiseerimata lähenemisviis: Erinevad teegid võisid kasutada erinevaid kokkuleppeid tagasihelistuste jaoks.
Alternatiivid Promise'ile enne:
Enne Promise'i laiemat kasutuselevõttu kasutati lisaks "puhtadele" tagasihelistustele ka teeke ja mustreid asünkroonsuse haldamiseks, nagu:
- Asünkroonilised teegid: Näiteks
async(Node.js jaoks, kuid võis kasutada ka brauseris). Pakkus tööriistu asünkroonsete voogude haldamiseks (paralleelne täitmine, järjestikune täitmine). - Publisher/Subscriber (Pub/Sub) muster: Keerulisemate stsenaariumide jaoks.
- Sündmuste emitterid: Node.js ja brauseri keskkonnas (näiteks
EventEmitter).
Kuid, tagasihelistused jäid paljude asünkroonsete operatsioonide aluseks. Promise pakkus struktureeritumat, ühtset ja loetavamat viisi asünkroonsusega tegelemiseks, lahendades paljusid "Callback Hell" probleeme.