Avatar billede chris09 Novice
08. juni 2017 - 21:40 Der er 5 kommentarer

callback funktion

Hej
Jeg prøver at forstå callback funktioner, især i kontrast til "almindelige" funktioner i JavaScript.
Jeg har kigget på noget af den kode, som jeg har skrevet tidligere for at se, om jeg kan gennemskue begrebet, men er nu stadig lidt i tvivl om, hvornår man kan kalde en funktion for en callback funktion og ikke.
Er der nogen, der kan give et simpel/godt eksempel på en callback funktion og gerne i JavaScript og ikke jQuery?

(Har skam læst og set tutorials, men har svært ved at finde et eksempel, der giver mig en regel for, hvornår man kan tale om det ene og det andet)
Avatar billede Slater Ekspert
08. juni 2017 - 21:59 #1
Callback er ikke en anden slags funktion end en "normal" funktion. Et callback er bare en funktion der gives som parameter til en anden funktion, så den kan kalde den.

Hvis en funktion f.eks. kan tage lang tid at udføre, kan man bede den om at udføre en anden funktion når den er færdig. Det er et callback. Men du kan bruge nøjagtig den samme funktion som callback og som "normal".
Avatar billede Slater Ekspert
08. juni 2017 - 22:03 #2
F.eks.

function funktionDerTagerLangTid(a, b, callback) {
    // Udfør en masse kode der tager lang tid

    callback();
}

funktionDerTagerLangTid(1, 2, function() {
    // Denne anonyme funktion sendes som callback. Men der er intet specielt ved den.
    alert("Nu er jeg færdig");
})
Avatar billede chris09 Novice
08. juni 2017 - 22:05 #3
Okay. Men når man så bruger event listener, som jeg kan forstå, at nogen omtaler som en metode andre en funktion, er nedenstående så en callback funktion, idet den gives som parameter til addEventListener? Den eksekveres jo ikke med det samme, men først når eventet kaldes.

btn.addEventListener('click', function() {
  var rndCol = 'rgb(' + random(255) + ',' + random(255) + ',' + random(255) + ')';
  document.body.style.backgroundColor = rndCol;
});
Avatar billede Slater Ekspert
08. juni 2017 - 22:10 #4
Simpelt fortalt er en metode en funktion i en klasse. Eftersom Javascript (før ES6, som endnu ikke understøttes af browsere) ikke har ægte klasser, er det lidt et løst og subjektivt begreb der.

Men ja, den anonyme funktion du sender til en eventlistener er et callback.
Avatar billede chris09 Novice
08. juni 2017 - 22:20 #5
Super, det begynder at give mening. Mange tak for input og fortræffeligt eksempel ;)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester