पहला: आप इसका उपयोग नहीं कर सकते $.Promise();
क्योंकि यह मौजूद नहीं है।
एक आस्थगित वस्तु एक वस्तु है कि कर सकते हैं बनाने के एक वादा और करने के लिए अपने राज्य को बदलने resolved
या rejected
। यदि आप अपना स्वयं का फ़ंक्शन लिखते हैं और कॉलिंग कोड को एक वादा प्रदान करना चाहते हैं, तो डिफ्रेड्स का उपयोग आमतौर पर किया जाता है। आप मूल्य के निर्माता हैं ।
एक वादा है, जैसा कि नाम कहता है, भविष्य के मूल्य के बारे में एक वादा। आप मान प्राप्त करने के लिए उस पर कॉलबैक संलग्न कर सकते हैं। वादा आपको "दिया गया" था और आप भविष्य के मूल्य के रिसीवर हैं ।
आप वादे की स्थिति को संशोधित नहीं कर सकते। केवल कोड है कि बनाया वादा अपने राज्य को बदल सकते हैं।
उदाहरण:
1. ( उत्पादन ) जब आप अपने स्वयं के कार्यों के लिए वादा-समर्थन प्रदान करना चाहते हैं तो आप आस्थगित वस्तुओं का उपयोग करते हैं। आप एक मूल्य की गणना करते हैं और वादा हल होने पर नियंत्रण करना चाहते हैं।
function callMe() {
var d = new $.Deferred();
setTimeout(function() {
d.resolve('some_value_compute_asynchronously');
}, 1000);
return d.promise();
}
callMe().done(function(value) {
alert(value);
});
2. ( आगे ) यदि आप एक फ़ंक्शन कह रहे हैं जो स्वयं एक वादा वापस करता है, तो आपको अपनी स्वयं की आस्थगित वस्तु बनाने की आवश्यकता नहीं है। आप बस वह वादा वापस कर सकते हैं। इस स्थिति में, फ़ंक्शन मान नहीं बनाता है, लेकिन इसके बाद (इसका प्रकार):
function fetchData() {
return $.ajax({...});
}
fetchData().done(function(response) {
});
3. ( प्राप्त करें ) कभी-कभी आप वादों / मूल्यों के साथ बनाना या पास नहीं करना चाहते हैं, आप उन्हें सीधे उपयोग करना चाहते हैं, अर्थात आप कुछ के रिसीवर हैं:
$('#my_element').fadeOut().promise().done(function() {
});
बेशक, इन सभी उपयोग के मामलों को भी मिलाया जा सकता है। आपका कार्य मूल्य का रिसीवर हो सकता है (उदाहरण के लिए अजाक्स कॉल से) और उस पर आधारित एक अलग मूल्य की गणना (उत्पादन) करें।
संबंधित सवाल: