Avatar billede nidyahou Praktikant
20. februar 2009 - 17:28 Der er 5 kommentarer og
1 løsning

lave function med callback function som parameter

Egentlig skal det bruges til et jquery plugin, men jeg gætter på at metoden bare er den samme som hvis man har en almindelig function hvor en af de værdier der skal passes er en funktion altså: hvordan kan jeg lave en funktion som udfører det den skal og derefter executer en anden funktion som er defineret ved kaldet af den første funktion ex:


function DosupmThenFiresecond(id, callback)
{
//do supm
var id;
id++;
alert("supm supm" + id);
//then fire callback
callback();
}

hvor man kalder med

DosumpThenFiresecon(7, function(){alert("callback");});
Avatar billede erikjacobsen Ekspert
20. februar 2009 - 17:46 #1
Ganske som du skriver - men uden dine små fejl:


    function DosupmThenFiresecond(id, callback)
{
//do supm
id++;
alert("supm supm" + id);
//then fire callback
callback();
}



DosupmThenFiresecond(7,function (){alert("callback"); });
Avatar billede nidyahou Praktikant
20. februar 2009 - 18:13 #2
hvad hvis der så ikke er noget callback?
Avatar billede erikjacobsen Ekspert
20. februar 2009 - 18:18 #3
"ikke er" - i hvilken betydning?

Hvis der ikke kan ske noget, kan du tage en funktion med, der ikke laver noget. Du kan også tage en null-værdi med, og lade være med at kalde callback funktionen i det tilfælde.
Avatar billede nidyahou Praktikant
20. februar 2009 - 18:27 #4
ofcourse jeg er bare en klovn til mit script.


Hvis der er nogle der søger på denne streng og leder efter noget med jquery kan jeg lige poste mit problem:

min kode var:
    $.fn.removeRow = function(callback) {
        $(this).animate({ height: "0", opacity: "0" }, 300, function() {
            var parentTable = $(this).parent();
            $(this).remove();
            parentTable.stripeTable();
        });

            if (typeof callback == "function") {
                callback();
            }
}

men burde være:

    $.fn.removeRow = function(callback) {
        $(this).animate({ height: "0", opacity: "0" }, 300, function() {
            var parentTable = $(this).parent();
            $(this).remove();
            parentTable.stripeTable();
            if (typeof callback == "function") {
                callback();
            }
        });
}

callback'et blev simpelthen bare udført for hurtigt, så der stadig blev kalkuleret med forhold der netop skulle være ændrede af den første funktion.

Tak for hjælpen og din tid champ - lukker.
Avatar billede nidyahou Praktikant
21. februar 2009 - 10:11 #5
Avatar billede erikjacobsen Ekspert
21. februar 2009 - 10:39 #6
Hehe, jeg tror faktisk min søn er nået ind i bananplantagen ...  :)
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