এই উত্তরটি ব্যবহার করে promises, মানকটির একটি জাভাস্ক্রিপ্ট বৈশিষ্ট্য ECMAScript 6। যদি আপনার টার্গেট প্ল্যাটফর্ম সমর্থন না করে promisesতবে এটি প্রোমিসজেসের সাথে পলিফিল করুন ।
প্রতিশ্রুতিগুলি জাভাস্ক্রিপ্টে অ্যাসিক্রোনাস অপারেশন পরিচালনা করার জন্য একটি নতুন (এবং অনেক ভাল) উপায়:
$('a.button').click(function(){
if (condition == 'true'){
function1(someVariable).then(function() {
//this function is executed after function1
function2(someOtherVariable);
});
}
else {
doThis(someVariable);
}
});
function function1(param, callback) {
return new Promise(function (fulfill, reject){
//do stuff
fulfill(result); //if the action succeeded
reject(error); //if the action did not succeed
});
}
এটি এই সাধারণ উদাহরণের জন্য একটি গুরুত্বপূর্ণ ওভারহেডের মতো মনে হতে পারে তবে আরও জটিল কোডের জন্য এটি কলব্যাকগুলি ব্যবহার করার চেয়ে অনেক ভাল। আপনি একাধিক thenবিবৃতি ব্যবহার করে একাধিক অ্যাসিনক্রোনাস কল সহজেই চেইন করতে পারেন :
function1(someVariable).then(function() {
function2(someOtherVariable);
}).then(function() {
function3();
});
আপনি সহজেই jQuery ডিফার্ডস মোড়ানো করতে পারেন (যা $.ajaxকল থেকে ফিরে আসে ):
Promise.resolve($.ajax(...params...)).then(function(result) {
//whatever you want to do after the request
});
@ চারিলিএফএফএল যেমন উল্লেখ করেছেন, jqXHRঅবজেক্টটি ইন্টারফেস $.ajax()প্রয়োগ করে ফিরিয়ে দিয়েছে Promise। সুতরাং এটিতে একটি আবদ্ধ করা আসলে প্রয়োজন হয় না Promise, এটি সরাসরি ব্যবহার করা যেতে পারে:
$.ajax(...params...).then(function(result) {
//whatever you want to do after the request
});
function1একটি ASYNC অপারেশন সম্পাদন?