2012-03-26 7 views
0

Ich bin nicht sicher, wie man diesen Ansatz, wie ich bin ziemlich neu in jQuery. Ich möchte eine Callback-Funktion innerhalb einer benutzerdefinierten Funktion erstellen. Hier ist mein Beispiel:eine Callback-Funktion innerhalb einer benutzerdefinierten jQuery Funktion

function doSomething() { 
    var output = 'output here'; 
    // Do something here 

    // This is where I want to create the callback function and pass output as a parameter 
} 

ich die Callback-Funktion durch eine beliebige Anzahl von Skripten zugänglich sein will (zum Beispiel mehr als ein Skript dieses Rückruf zugreifen kann).

Diese Funktion (doSomething) ist nicht Teil eines Plugin, sondern Teil einer anderen Callback-Funktion selbst. Ich habe auch eine Var innerhalb der Funktion erstellt und möchte dies auch durch die Callback-Funktion übergeben.

Wie kann ich das tun?

+0

So Sie sagen, Sie haben keine Kontrolle darüber, was an "etwas tun" weitergegeben wird? Abhängig davon, welches Framework Ihre Verwendung ist, die möglicherweise nicht wahr ist ... können Sie den Code teilen, an dem Sie "doSomething" als Rückruf übergeben? – bhamlin

+0

Ja, das ist richtig. Ich werde nicht unbedingt wissen, was in etwas passiert ist, aber es muss für jemanden verfügbar sein, der hineinkommt und sich ausdehnt. – Thomas

Antwort

1

Es ist nicht ganz klar, was Sie fragen. Das Erstellen einer Callback-Funktion ist so einfach, wie eine Funktion zu deklarieren und als Argument an eine andere Funktion zu übergeben, die einen Callback erwartet.

function doWork(fnCallback) { 
    // do some work 
    // when done with the work 
    // call the callback 
    var someVar = 1; 
    fnCallback(someVar); 
} 

function myCallback(val) { 
    alert("got my callback - val=" + val); 
} 

doWork(myCallback); 

Oder eine anonyme Funktion statt einer benannten Funktion

doWork(function(val) { 
    alert("got my callback - val=" + val); 
}); 

Wenn Sie wirklich eine Funktion innerhalb einer Funktion deklarieren möchten, können Sie das auch tun:

function doSomething() { 

    function myCallback(val) { 
     alert("got my callback - val=" + val); 
    } 
    doWork(myCallback); 
} 
+0

Das erste Beispiel sieht so aus, wie ich es erreichen möchte, aber kann diese Callback-Funktion mehrmals aufgerufen werden? Nehmen wir an, Sie laden 3 Skripte auf die Seite und jedes Skript möchte mit myCallback in diesen Callback einsteigen. Wird es Probleme geben, myCallback 3 mal aufzurufen? – Thomas

+0

@Thomas - 'myCallback' ist nur eine normale Funktion. Sie können es so oft wie Sie möchten anrufen. Funktionen werden so genannt - das ist ihr Punkt im Leben. Es gibt keinen Unterschied zwischen einer Funktion, die als Callback verwendet wird, und einer regulären Funktion - sie sind dasselbe. – jfriend00

+0

Ok, das wollte ich wissen. Ich war mir nicht sicher, ob der Prozess ** eine neue Funktion definierte oder nur ** anrief ** - da war ich verwirrt, weil ich weiß, dass man eine Funktion nicht mehr als einmal definieren kann, aber das kann man sicher benutze es mehr als einmal. Danke, dass du das für mich geklärt hast! – Thomas

Verwandte Themen