Sobes.tech
Middle

Wat gebruikte je voordat Promise verscheen?

sobes.tech AI

Antwoord van AI

Voor de komst van Promise werden callbacks veel gebruikt.

De essentie van callbacks:

Een functie wordt als argument doorgegeven aan een andere functie en wordt uitgevoerd nadat een bepaalde operatie is voltooid.

Voorbeeld:

// Voorbeeld van het aanroepen van een asynchrone operatie met callback
function fetchData(callback) {
  setTimeout(() => {
    const data = "Enkele gegevens";
    callback(null, data); // Het eerste argument is een fout, het tweede is het resultaat
  }, 1000);
}

fetchData((err, data) => {
  if (err) {
    console.error("Fout bij het ophalen van gegevens:", err);
  } else {
    console.log("Ontvangen gegevens:", data);
  }
});

Nadelen van het uitsluitend gebruiken van callbacks:

  • Callback Hell (Callback Hel): Een keten van geneste asynchrone operaties leidt tot sterk geneste en moeilijk leesbare code.
  • Moeilijkheden bij foutafhandeling: Fouten moeten op elk niveau worden doorgegeven en gecontroleerd.
  • Gebrek aan gestandaardiseerde aanpak: Verschillende bibliotheken kunnen verschillende conventies voor callbacks gebruiken.

Alternatieve benaderingen vóór Promise:

Vóór de komst van Promise werden naast "schone" callbacks bibliotheken en patronen gebruikt om asynchronie te beheren, zoals:

  • Asynchrone bibliotheken: Bijvoorbeeld async (voor Node.js, maar ook in browsers). Bieden hulpprogramma's voor het beheren van asynchrone stromen (parallel uitvoeren, sequentieel uitvoeren).
  • Publisher/Subscriber (Pub/Sub) patroon: Voor complexere interactiescenario's.
  • Event emitters: In Node.js en browseromgevingen (bijvoorbeeld EventEmitter).

Desalniettemin bleven callbacks de basis voor veel asynchrone operaties. Promise bood een meer gestructureerde, uniforme en leesbare manier om met asynchronie te werken, waardoor veel problemen van "Callback Hell" werden opgelost.