Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Forståelse af Callbacks i JavaScript | Asynkron JavaScript og API-Integration
Avanceret JavaScript-Mestring

bookForståelse af Callbacks i JavaScript

Hvad er et Callback?

I JavaScript bruges callbacks ofte til at håndtere asynkrone opgaver, såsom at hente data fra et API, læse filer eller vente på brugerinput.

Callbacks udgør grundlaget for asynkron programmering i JavaScript, da de gør det muligt for programmet at håndtere opgaver, der tager tid, uden at blokere udførelsen af resten af koden.

Hvordan Callbacks Fungerer i Asynkron Programmering

Ved en asynkron operation udføres en callback-funktion, når operationen er færdig, hvilket sikrer, at resten af programmet kan fortsætte, mens opgaven afsluttes.

index.html

index.html

index.js

index.js

copy
  • fetchData: Simulerer en asynkron operation (som at hente data), der tager 2 sekunder at fuldføre. Callback-funktionen kaldes, når dataene er tilgængelige;
  • displayData: Callback-funktionen, der gives videre til fetchData. Den kaldes med de hentede data, når operationen er færdig;
  • Resten af koden fortsætter med at køre, mens dataene hentes, og når dataene er klar, udløses callbacken for at behandle dem.

Problemer med callbacks: Callback hell og indlejring

Selvom callbacks er kraftfulde, kan de hurtigt føre til problemer, når der er mange asynkrone operationer, der er afhængige af hinanden. Dette resulterer ofte i "callback hell", hvor callbacks er dybt indlejrede, hvilket gør koden svær at læse og vedligeholde.

getUser(1, user => {
  console.log('User fetched:', user);

  getOrders(user.id, orders => {
    console.log('Orders fetched:', orders);

    getOrderDetails(orders[0].id, orderDetails => {
      console.log('Order details fetched:', orderDetails);

      getShippingStatus(orderDetails.shippingId, status => {
        console.log('Shipping status fetched:', status);
      });
    });
  });
});

Dette eksempel illustrerer callback hell, et problem der opstår, når flere asynkrone operationer er afhængige af hinanden, hvilket fører til dybt indlejrede callbacks. Her er hver funktion (getUser, getOrders, getOrderDetails, getShippingStatus) afhængig af resultatet fra den foregående, hvilket resulterer i en indlejret struktur, der er svær at læse, vedligeholde og fejlfinde. Denne tilgang komplicerer fejlhåndtering, flowkontrol og fremtidige ændringer, hvilket gør koden besværlig at arbejde med, efterhånden som antallet af callbacks stiger.

Refaktorering af callbacks for mere overskuelig kode

For at undgå callback hell og forbedre læsbarheden og vedligeholdelsen af din kode, findes der flere strategier til at refaktorere callbacks:

Navngivne funktioner: I stedet for at bruge anonyme callback-funktioner, opret navngivne funktioner, der kan genbruges og holder koden mere organiseret.

function getUserCallback(user) {
  console.log('User fetched:', user);
  getOrders(user.id, getOrdersCallback);
}

function getOrdersCallback(orders) {
  console.log('Orders fetched:', orders);
  getOrderDetails(orders[0].id, getOrderDetailsCallback);
}

function getOrderDetailsCallback(orderDetails) {
  console.log('Order details fetched:', orderDetails);
  getShippingStatus(orderDetails.shippingId, getShippingStatusCallback);
}

function getShippingStatusCallback(status) {
  console.log('Shipping status fetched:', status);
}

getUser(1, getUserCallback);

Ved at bruge navngivne funktioner bliver kodens flow tydeligere. Det er lettere at forstå, vedligeholde og fejlfinde end dybt indlejrede anonyme callbacks.

Opdeling af logikken: Opdel komplekse opgaver i mindre funktioner. Hver funktion bør udføre én specifik operation og kalde den næste operation. Dette reducerer indlejring og gør koden mere modulær.

Promises (behandles i senere kapitler): Promises er et moderne alternativ til callbacks og giver en mere overskuelig og læsbar måde at håndtere asynkrone operationer på. Promises hjælper med at eliminere callback hell ved at kæde .then() metoder sammen.

1. Hvad er en callback-funktion?

2. Hvad er "callback hell"?

question mark

Hvad er en callback-funktion?

Select the correct answer

question mark

Hvad er "callback hell"?

Select the correct answer

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 4. Kapitel 2

Spørg AI

expand

Spørg AI

ChatGPT

Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat

Suggested prompts:

Can you give an example of a simple callback in JavaScript?

What are some common use cases for callbacks in real-world applications?

How do callbacks differ from promises in handling asynchronous code?

Awesome!

Completion rate improved to 2.22

bookForståelse af Callbacks i JavaScript

Stryg for at vise menuen

Hvad er et Callback?

I JavaScript bruges callbacks ofte til at håndtere asynkrone opgaver, såsom at hente data fra et API, læse filer eller vente på brugerinput.

Callbacks udgør grundlaget for asynkron programmering i JavaScript, da de gør det muligt for programmet at håndtere opgaver, der tager tid, uden at blokere udførelsen af resten af koden.

Hvordan Callbacks Fungerer i Asynkron Programmering

Ved en asynkron operation udføres en callback-funktion, når operationen er færdig, hvilket sikrer, at resten af programmet kan fortsætte, mens opgaven afsluttes.

index.html

index.html

index.js

index.js

copy
  • fetchData: Simulerer en asynkron operation (som at hente data), der tager 2 sekunder at fuldføre. Callback-funktionen kaldes, når dataene er tilgængelige;
  • displayData: Callback-funktionen, der gives videre til fetchData. Den kaldes med de hentede data, når operationen er færdig;
  • Resten af koden fortsætter med at køre, mens dataene hentes, og når dataene er klar, udløses callbacken for at behandle dem.

Problemer med callbacks: Callback hell og indlejring

Selvom callbacks er kraftfulde, kan de hurtigt føre til problemer, når der er mange asynkrone operationer, der er afhængige af hinanden. Dette resulterer ofte i "callback hell", hvor callbacks er dybt indlejrede, hvilket gør koden svær at læse og vedligeholde.

getUser(1, user => {
  console.log('User fetched:', user);

  getOrders(user.id, orders => {
    console.log('Orders fetched:', orders);

    getOrderDetails(orders[0].id, orderDetails => {
      console.log('Order details fetched:', orderDetails);

      getShippingStatus(orderDetails.shippingId, status => {
        console.log('Shipping status fetched:', status);
      });
    });
  });
});

Dette eksempel illustrerer callback hell, et problem der opstår, når flere asynkrone operationer er afhængige af hinanden, hvilket fører til dybt indlejrede callbacks. Her er hver funktion (getUser, getOrders, getOrderDetails, getShippingStatus) afhængig af resultatet fra den foregående, hvilket resulterer i en indlejret struktur, der er svær at læse, vedligeholde og fejlfinde. Denne tilgang komplicerer fejlhåndtering, flowkontrol og fremtidige ændringer, hvilket gør koden besværlig at arbejde med, efterhånden som antallet af callbacks stiger.

Refaktorering af callbacks for mere overskuelig kode

For at undgå callback hell og forbedre læsbarheden og vedligeholdelsen af din kode, findes der flere strategier til at refaktorere callbacks:

Navngivne funktioner: I stedet for at bruge anonyme callback-funktioner, opret navngivne funktioner, der kan genbruges og holder koden mere organiseret.

function getUserCallback(user) {
  console.log('User fetched:', user);
  getOrders(user.id, getOrdersCallback);
}

function getOrdersCallback(orders) {
  console.log('Orders fetched:', orders);
  getOrderDetails(orders[0].id, getOrderDetailsCallback);
}

function getOrderDetailsCallback(orderDetails) {
  console.log('Order details fetched:', orderDetails);
  getShippingStatus(orderDetails.shippingId, getShippingStatusCallback);
}

function getShippingStatusCallback(status) {
  console.log('Shipping status fetched:', status);
}

getUser(1, getUserCallback);

Ved at bruge navngivne funktioner bliver kodens flow tydeligere. Det er lettere at forstå, vedligeholde og fejlfinde end dybt indlejrede anonyme callbacks.

Opdeling af logikken: Opdel komplekse opgaver i mindre funktioner. Hver funktion bør udføre én specifik operation og kalde den næste operation. Dette reducerer indlejring og gør koden mere modulær.

Promises (behandles i senere kapitler): Promises er et moderne alternativ til callbacks og giver en mere overskuelig og læsbar måde at håndtere asynkrone operationer på. Promises hjælper med at eliminere callback hell ved at kæde .then() metoder sammen.

1. Hvad er en callback-funktion?

2. Hvad er "callback hell"?

question mark

Hvad er en callback-funktion?

Select the correct answer

question mark

Hvad er "callback hell"?

Select the correct answer

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 4. Kapitel 2
some-alt