एक वादा एक "बात" है जो बोलने के लिए एक ऑपरेशन के "अंतिम" परिणामों का प्रतिनिधित्व करता है। यहाँ ध्यान देने वाली बात यह है कि, यह तब होता है जब कुछ घटित होता है और आप को इस पर ध्यान केंद्रित करने की अनुमति देता है कि कुछ होने के बाद क्या होना चाहिए । इसके परिणामस्वरूप स्वच्छ, बनाए रखने योग्य कोड होगा जहां कॉलबैक के अंदर कॉलबैक में कॉलबैक होने के बजाय, आपका कोड कुछ हद तक दिखाई देगा:
var request = new Promise(function(resolve, reject) {
//do an ajax call here. or a database request or whatever.
//depending on its results, either call resolve(value) or reject(error)
//where value is the thing which the operation's successful execution returns and
//error is the thing which the operation's failure returns.
});
request.then(function successHandler(result) {
//do something with the result
}, function failureHandler(error) {
//handle
});
वादों की युक्ति बताती है कि एक वादा है
then
पद्धति को एक नया वादा वापस करना चाहिए जो कि दिए गए सक्सेसहैंडलर या असफलता को पूरा करता है। इसका मतलब है कि आप एक साथ वादों की श्रृंखला बना सकते हैं जब आपके पास अतुल्यकालिक कार्यों का एक सेट होता है जिन्हें प्रदर्शन करने की आवश्यकता होती है और यह आश्वासन दिया जाता है कि संचालन की अनुक्रमण की गारंटी है जैसे कि आपने कॉलबैक का उपयोग किया था। इसलिए कॉलबैक के अंदर कॉलबैक के अंदर कॉलबैक पास करने के बजाय, जंजीर वादों वाला कोड इस तरह दिखता है:
var doStuff = firstAsyncFunction(url) {
return new Promise(function(resolve, reject) {
$.ajax({
url: url,
success: function(data) {
resolve(data);
},
error: function(err) {
reject(err);
}
});
};
doStuff
.then(secondAsyncFunction) //returns a promise
.then(thirdAsyncFunction); //returns a promise
वादों के बारे में अधिक जानने के लिए और वे सुपर कूल क्यों हैं, चेकआउट डोमिनिक का ब्लॉग: http://domenic.me/2012/10/14/youre-missing-the-point-of-promises/