Middle
Ce foloseai înainte de apariția Promise?
sobes.tech AI
Răspuns de la AI
Înainte de apariția Promise, callback-urile erau utilizate pe scară largă.
Esenta callback-urilor:
O funcție este transmisă unei alte funcții ca argument și este executată după finalizarea unei operații determinate.
Exemplu:
// Exemplu de apelare a unei operații asincrone cu callback
function fetchData(callback) {
setTimeout(() => {
const data = "Unele date";
callback(null, data); // Primul argument este o eroare, al doilea este rezultatul
}, 1000);
}
fetchData((err, data) => {
if (err) {
console.error("Eroare la preluarea datelor:", err);
} else {
console.log("Date primite:", data);
}
});
Dezavantaje ale utilizării exclusive a callback-urilor:
- Callback Hell (Iadul callback-urilor): Lanțul de operații asincrone încastrate duce la un cod foarte încastrat și dificil de citit.
- Dificultăți în gestionarea erorilor: Este necesar să se transmită și să se verifice erorile la fiecare nivel de încastrare.
- Lipsa unei abordări standardizate: Diferite biblioteci puteau folosi convenții diferite pentru callback-uri.
Abordări alternative înainte de Promise:
Înainte de apariția Promise, pe lângă callback-urile "pure", se foloseau biblioteci și modele pentru gestionarea asincronicității, cum ar fi:
- Biblioteci asincrone: De exemplu,
async(pentru Node.js, dar putea fi folosit și în browser). Oferă utilitare pentru gestionarea fluxurilor asincrone (execuție paralelă, execuție secvențială). - Modelul Publisher/Subscriber (Pub/Sub): Pentru scenarii de interacțiune mai complexe.
- Emitatoare de evenimente: În Node.js și în mediul browser (de exemplu,
EventEmitter).
Cu toate acestea, callback-urile au rămas fundamentul pentru multe operații asincrone. Promise a oferit o modalitate mai structuralizată, unificată și lizibilă de a lucra cu asincronia, eliminând multe probleme ale "Callback Hell".