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)
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".
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"); })
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.
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.
Super, det begynder at give mening. Mange tak for input og fortræffeligt eksempel ;)
Synes godt om
Ny brugerNybegynder
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.