Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Forståelse av Callbacks i JavaScript | Asynkron JavaScript og API-integrasjon
Avansert JavaScript-mestring

bookForståelse av Callbacks i JavaScript

Hva er en callback?

I JavaScript brukes callbacks ofte for å håndtere asynkrone oppgaver, som å hente data fra et API, lese filer eller vente på brukerinput.

Callbacks utgjør grunnlaget for asynkron programmering i JavaScript fordi de gjør det mulig for programmet å håndtere oppgaver som tar tid uten å blokkere utførelsen av resten av koden.

Hvordan callbacks fungerer i asynkron programmering

Ved en asynkron operasjon blir en callback-funksjon kjørt når operasjonen er ferdig, noe som sikrer at resten av programmet kan fortsette mens det ventes på at oppgaven skal fullføres.

index.html

index.html

index.js

index.js

copy
  • fetchData: Simulerer en asynkron operasjon (som å hente data), som tar 2 sekunder å fullføre. Tilbakekallingsfunksjonen blir kalt når dataene er tilgjengelige;
  • displayData: Tilbakekallingsfunksjonen som sendes til fetchData. Den kalles med de hentede dataene når operasjonen er fullført;
  • Resten av koden fortsetter å kjøre mens dataene hentes, og når dataene er klare, utløses tilbakekallingen for å behandle dem.

Problemer med tilbakekallinger: Callback Hell og nøsting

Selv om tilbakekallinger er kraftige, kan de raskt føre til problemer når det er mange asynkrone operasjoner som er avhengige av hverandre. Dette resulterer ofte i "callback hell", hvor tilbakekallinger er dypt nøstet, noe som gjør koden vanskelig å lese og vedlikeholde.

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 eksempelet illustrerer callback hell, et problem som oppstår når flere asynkrone operasjoner er avhengige av hverandre, noe som fører til dypt nestede callbacks. Her er hver funksjon (getUser, getOrders, getOrderDetails, getShippingStatus) avhengig av resultatet fra den forrige, noe som resulterer i en nestet struktur som er vanskelig å lese, vedlikeholde og feilsøke. Denne tilnærmingen gjør feilbehandling, flytkontroll og fremtidige endringer mer komplisert, og koden blir tungvint å arbeide med etter hvert som antallet callbacks øker.

Refaktorering av callbacks for renere kode

For å unngå callback hell og forbedre lesbarheten og vedlikeholdbarheten i koden, finnes det noen strategier for å refaktorere callbacks:

Navngitte funksjoner: I stedet for å bruke anonyme callback-funksjoner, opprett navngitte funksjoner som kan gjenbrukes og gjør koden mer organisert.

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 å bruke navngitte funksjoner blir flyten i koden tydeligere. Det er enklere å forstå, vedlikeholde og feilsøke enn dypt nestede anonyme callbacks.

Bryte ned logikken: Del opp komplekse oppgaver i mindre funksjoner. Hver funksjon bør utføre én spesifikk operasjon og kalle neste operasjon. Dette reduserer innrykk og gjør koden mer modulær.

Promises (dekkes i senere kapitler): Promises er et moderne alternativ til callbacks og gir en renere, mer lesbar måte å håndtere asynkrone operasjoner på. Promises bidrar til å eliminere callback hell ved å kjede .then()-metoder.

1. Hva er en callback-funksjon?

2. Hva er "callback hell"?

question mark

Hva er en callback-funksjon?

Select the correct answer

question mark

Hva er "callback hell"?

Select the correct answer

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 4. Kapittel 2

Spør AI

expand

Spør AI

ChatGPT

Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår

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 av Callbacks i JavaScript

Sveip for å vise menyen

Hva er en callback?

I JavaScript brukes callbacks ofte for å håndtere asynkrone oppgaver, som å hente data fra et API, lese filer eller vente på brukerinput.

Callbacks utgjør grunnlaget for asynkron programmering i JavaScript fordi de gjør det mulig for programmet å håndtere oppgaver som tar tid uten å blokkere utførelsen av resten av koden.

Hvordan callbacks fungerer i asynkron programmering

Ved en asynkron operasjon blir en callback-funksjon kjørt når operasjonen er ferdig, noe som sikrer at resten av programmet kan fortsette mens det ventes på at oppgaven skal fullføres.

index.html

index.html

index.js

index.js

copy
  • fetchData: Simulerer en asynkron operasjon (som å hente data), som tar 2 sekunder å fullføre. Tilbakekallingsfunksjonen blir kalt når dataene er tilgjengelige;
  • displayData: Tilbakekallingsfunksjonen som sendes til fetchData. Den kalles med de hentede dataene når operasjonen er fullført;
  • Resten av koden fortsetter å kjøre mens dataene hentes, og når dataene er klare, utløses tilbakekallingen for å behandle dem.

Problemer med tilbakekallinger: Callback Hell og nøsting

Selv om tilbakekallinger er kraftige, kan de raskt føre til problemer når det er mange asynkrone operasjoner som er avhengige av hverandre. Dette resulterer ofte i "callback hell", hvor tilbakekallinger er dypt nøstet, noe som gjør koden vanskelig å lese og vedlikeholde.

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 eksempelet illustrerer callback hell, et problem som oppstår når flere asynkrone operasjoner er avhengige av hverandre, noe som fører til dypt nestede callbacks. Her er hver funksjon (getUser, getOrders, getOrderDetails, getShippingStatus) avhengig av resultatet fra den forrige, noe som resulterer i en nestet struktur som er vanskelig å lese, vedlikeholde og feilsøke. Denne tilnærmingen gjør feilbehandling, flytkontroll og fremtidige endringer mer komplisert, og koden blir tungvint å arbeide med etter hvert som antallet callbacks øker.

Refaktorering av callbacks for renere kode

For å unngå callback hell og forbedre lesbarheten og vedlikeholdbarheten i koden, finnes det noen strategier for å refaktorere callbacks:

Navngitte funksjoner: I stedet for å bruke anonyme callback-funksjoner, opprett navngitte funksjoner som kan gjenbrukes og gjør koden mer organisert.

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 å bruke navngitte funksjoner blir flyten i koden tydeligere. Det er enklere å forstå, vedlikeholde og feilsøke enn dypt nestede anonyme callbacks.

Bryte ned logikken: Del opp komplekse oppgaver i mindre funksjoner. Hver funksjon bør utføre én spesifikk operasjon og kalle neste operasjon. Dette reduserer innrykk og gjør koden mer modulær.

Promises (dekkes i senere kapitler): Promises er et moderne alternativ til callbacks og gir en renere, mer lesbar måte å håndtere asynkrone operasjoner på. Promises bidrar til å eliminere callback hell ved å kjede .then()-metoder.

1. Hva er en callback-funksjon?

2. Hva er "callback hell"?

question mark

Hva er en callback-funksjon?

Select the correct answer

question mark

Hva er "callback hell"?

Select the correct answer

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 4. Kapittel 2
some-alt