तो, यह सवाल पूछा गया है बार, और मुझे यकीन है कि है कि हर कोई (अपने आप को शामिल) tried this once हूँ: इसके बजाय आप trackPage में कॉलबैक पास करना चाहिए।
यह केवल एक असीमित कॉल की प्रकृति है, आप return
मान के रूप में अपने परिणामों का उपयोग नहीं कर सकते हैं। Thats क्यों वे एक समारोह में गुजर रहे हैं जो कॉल का नतीजा मिलता है, वे return
नहीं कर सकते हैं! यह भी ध्यान दें कि elqTracker.pageTrack()
फ़ंक्शन कॉल तत्काल लौटाता है, इसलिए आपका returnValue
बस undefined
है।
अधिकांश लोग (dfsq का उत्तर देखें) एक पैरामीटर के रूप में कॉलबैक फ़ंक्शन पेश करके इस समस्या को हल करें। इस विधि को आजमाया गया है, और सही – हालांकि jQuery में $.Deferred
है। अब है कि आपके trackPage()
एक वस्तु है कि आप के लिए कॉलबैक संलग्न कर सकते हैं रिटर्न
function trackPage(){
var elqTracker = new jQuery.elq(459),
dfd = $.Deferred();
elqTracker.pageTrack({
success: function() {
elqTracker.getGUID(function(guid) {
dfd.resolve(guid);
});
}
});
return dfd.promise();
}
// example use:
trackPage().done(function(guid) {
alert("Got GUID:" + guid);
});
सूचना: यह आप अपने खुद के अतुल्यकालिक तर्क एक promise
है जिसे आप के लिए कॉलबैक के किसी भी संख्या संलग्न कर सकते हैं यह सुनिश्चित करने के लिए अनुमति देता है? आपको उन्हें तुरंत संलग्न करने की ज़रूरत नहीं है।
var pageHit = trackPage().done(function(guid) {
alert("Page Hit GUID:" +guid);
});
$("button").click(function() {
pageHit.done(function(guid) {
alert("Clicked on Page GUID:" + guid);
});
});
इसके अलावा, jQuery AJAX मॉड्यूल हमेशा वादों रिटर्न के रूप में अच्छी तरह से है, तो आपके सभी AJAX के सामान के लिए इंटरफेस है, तो आप अपने खुद के तर्क वापसी वादा बहुत समान होना चाहिए।
एक पक्ष नोट के रूप में: मैं बाहर बात करने के लिए है कि अपने var returnValue
गलत "गुंजाइश" फिर भी था चाहते हैं। इसे trackPage
फ़ंक्शन के बाहरी दायरे में घोषित करने की आवश्यकता थी। इस फिक्स के साथ भी, अवधारणा अभी भी काम नहीं करती है।
'getGUID' एक असीमित कॉल है? – Anurag
सुनिश्चित नहीं है .. यह अन्य जेएस से एक प्लगइन कॉल है (एक कॉल जिसे मैं संशोधित नहीं कर सकता) .. मैं मूल्य को अलर्ट कर सकता हूं .. और इसे एक नए चर को भी असाइन कर सकता हूं .. मुझे लगता है कि यह मान बाहर के बाहर हो सकता है फ़ंक्शन – patrick
निश्चित रूप से उस स्थिति में असीमित लगता है। –