2012-09-07 12 views
6

मैं एक jQuery.Deferred किया कॉलबैक करने के लिए कुछ अतिरिक्त पैरामीटर पास करना चाहते हैं, मैं अब इस तरह यह कर रहा हूँ:पास jquery.Deferred कॉलबैक करने के लिए अतिरिक्त पैरामीटर

//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); 
}); 

ही कोई बेहतर है मैं सोच रहा था ऐसा करने का तरीका? मैंने सोचा कि मैंने अज्ञात रैपर फ़ंक्शन की आवश्यकता के बिना पैरामीटर पास करने के लिए क्लीनर तरीके के बारे में कहीं पढ़ा था, लेकिन मैं अपने जीवन के लिए याद नहीं कर सकता कि मैंने इसे कहाँ पढ़ा है, या जो मैंने पढ़ा है। Google खोज अब तक कुछ भी नहीं बदल गई है।

उत्तर

9

आदेश .done कॉलबैक के लिए कुछ आप .resolve में इसे पारित करने की जरूरत है पारित करने के लिए में, उदाहरण के

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

के लिए लेकिन आपके मामले dfd में एक $.ajax वस्तु है और .resolve आंतरिक रूप से कहा जाता है, आप कोई नियंत्रण नहीं खत्म हो गया तो यह। इसलिए ऐसा करने का एकमात्र तरीका अज्ञात फ़ंक्शन और क्लोजर का उपयोग करना है।

वैसे: इस समाधान के बारे में कुछ भी अशुद्ध नहीं है।

+0

ठीक है, यह शायद एक कस्टम मामला है जिसके बारे में मैंने प्रोग्रामर द्वारा संकल्प किया था। धन्यवाद! – Asciiom