2012-09-07 9 views
6

ich einige zusätzliche Parameter an eine jQuery.Deferred getan Rückruf übergeben wollen, ich tue es jetzt wie folgt aus:Pass zusätzliche Parameter zu jquery.Deferred Rückruf

//dfd gets defined here as the return value of jQuery.ajax 

var me = this; 
var selector = $("#selector"); 

dfd.done(function(response){ 
    me.updated(response, selector); 
}); 

ich mich gefragt, ob es eine bessere ist Weg, dies zu tun? Ich dachte, ich hätte irgendwo etwas über eine sauberere Methode gelesen, um Parameter ohne die Notwendigkeit einer anonymen Wrapper-Funktion zu übergeben, aber ich kann mich nicht für das Leben von mir erinnern, wo ich es gelesen habe oder was ich gelesen habe. Google-Suchanfragen haben bisher nichts ergeben.

Antwort

9

Um etwas zu .done Rückruf übergeben Sie es in .resolve passieren müssen, zum Beispiel

dfd.done(function(selector) { 
    console.log(selector); 
}); 
dfd.resolve(selector); 

aber in Ihrem Fall dfd ist ein $.ajax Objekt und .resolve wird intern aufgerufen, so dass Sie keine Kontrolle haben es. Daher können Sie nur anonyme Funktionen und Schließungen verwenden.

Übrigens: An dieser Lösung ist nichts Unreines.

+0

Ok hervorragend, es ist wahrscheinlich ein kundenspezifischer Fall, in dem ich gelesen habe, wo die Entschlossenheit vom Programmierer gemacht wurde. Vielen Dank! – Asciiom

Verwandte Themen