একটি প্রতিশ্রুতি একটি "জিনিস" যা কথা বলতে কোনও অপারেশনের "পরিণাম" ফলাফল উপস্থাপন করে। এখানে লক্ষণীয় বিষয়টি হ'ল, এটি কখন কী ঘটেছিল তার বিবরণ বিমূ .় করে এবং আপনাকে কিছু ঘটে যাওয়ার পরে কী ঘটবে সে সম্পর্কে ফোকাস করার অনুমতি দেয় । এটি পরিষ্কার, রক্ষণাবেক্ষণযোগ্য কোডে ফলাফল করবে যেখানে কলব্যাকের অভ্যন্তরে কলব্যাকের অভ্যন্তরে কলব্যাকের পরিবর্তে আপনার কোডটি কিছুটা দেখতে দেখতে পাওয়া যাবে:
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
প্রদত্ত সাফল্যহ্যান্ডলার বা ব্যর্থতাহ্যান্ডলার কলব্যাক শেষ হলে পদ্ধতিটি একটি নতুন প্রতিশ্রুতি ফিরে আসে should এর অর্থ হ'ল আপনি যখন অ্যাসিক্রোনাস কাজগুলির একটি সেট প্রস্তুত করেন এবং আপনি নিশ্চিত হন যে আপনি কলব্যাকগুলি ব্যবহার করেছেন ঠিক তেমন ক্রিয়াকলাপের ক্রমটি গ্যারান্টিযুক্ত রয়েছে তখন আপনি প্রতিশ্রুতিগুলি একসাথে চেইন করতে পারেন। সুতরাং কলব্যাকের অভ্যন্তরে কলব্যাকের অভ্যন্তরে একটি কলব্যাক পাস করার পরিবর্তে শিকলযুক্ত প্রতিশ্রুতি সহ কোডটি মনে হয়:
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
প্রতিশ্রুতি ব্যাপারে আরো জানতে এবং কেন তারা প্রচন্ড cool আছে, Domenic এর ব্লগ চেকআউট: http://domenic.me/2012/10/14/youre-missing-the-point-of-promises/