Sobes.tech
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".