স্থগিত কলব্যাকটি যেভাবে কাজ করে তা হ'ল প্রতিটি সময় আপনি এতে একটি কলব্যাক যুক্ত করেন, সেই কলব্যাকটি একটি অ্যারেতে ঠেলে দেওয়া হয়। তারপরে, যখন স্থিত বস্তুতে .resolve()
বা .resolveWith()
পদ্ধতিটি কল করা হয়, .done()
অ্যারেতে সমস্ত কলব্যাকগুলি ক্রমে কার্যকর করা হয়।
একটি ডিফার্ড অবজেক্ট কী তা এখন আমরা দেখতে পারি। উদাহরণ হিসাবে নীচে স্নিপেট নিন।
var deferred = $.Deferred();
var promise = deferred.promise();
আমাদের কাছে এখন একটি স্থগিত বস্তু এবং স্থগিত করা বস্তুর প্রতিশ্রুতি অবজেক্ট। বিলম্বিত বস্তুর সব প্রতিশ্রুতি অবজেক্ট হিসেবে একই পদ্ধতি আছে তবে প্রতিশ্রুতি বস্তুর শুধুমাত্র পদ্ধতি আছে, .done()
, .fail()
, এবং .always()
যা প্রতিটি নিজ নিজ জন্য বিলম্বিত বস্তু callbacks যোগ করার জন্য ব্যবহার করা হয় event
। অন্যদিকে ডেফার্ড বস্তুর বিভিন্ন পদ্ধতি, সবচেয়ে গুরুত্বপূর্ণভাবে হয়েছে .resolve()
এবং .reject()
। এই পদ্ধতিগুলি মুলতুবি বস্তুতে ডাকা হলে সমস্ত কলব্যাকগুলি কল করা হয়। .resolve()
আগুন .done()
এবং .always()
যখন callbacks .reject()
পদ্ধতি কল .fail()
এবং .always()
callbacks।
সাধারণত স্থগিত করা বস্তুটি একটি ব্যক্তিগত স্কোপের মধ্যে লুকিয়ে রাখা হয় এবং প্রতিশ্রুতিযুক্ত বস্তুটি ফাংশন থেকে ফিরে আসে যাতে কলব্যাকগুলি তার উপর রাখা যায়। মুলতুবি বস্তুটি পরে সমাধান করা হবে, যেমন একটি এজাক্স অনুরোধ সম্পূর্ণ হওয়ার পরে বা কোনও চিত্র লোড হওয়ার পরে, একটি সেটটাইমআউট পরে ইত্যাদি realize এটি উপলব্ধি করাও গুরুত্বপূর্ণ যে একটি স্থগিত বস্তু কেবল একবার সমাধান করা যেতে পারে। যদি এটি ইতিমধ্যে সমাধান হয়ে যায় তবে তা কলব্যাকগুলি অবিলম্বে কল করা হবে।
এখানে আরও একটি উদাহরণ রয়েছে যা আমি ব্যবহার করি:
function loadImage(url) {
var def = $.Deferred(),
img = new Image();
$(img).on("load error",function(e){
if (e.type === "error") {
def.reject(url);
}
else {
def.resolve(url);
}
});
img.src = url;
// return the promise object so that callbacks can
// be defined on the deferred object.
return def.promise();
}
loadImage("foobar.jpg").done(function(){
alert("The image is loaded!");
}).fail(function(){
alert("The image failed to load!");
}).always(function(){
alert("This is always called!");
});
JQuery এর $.Deferred()
পদ্ধতি এবং মুলতুবি বস্তু সম্পর্কে আরও তথ্যের জন্য, http://api.jquery.com/category/deferred-object/ দেখুন
Deferred
অবজেক্ট বোঝাতে চান ? এটি কি নোড.জেএস-এর নির্দিষ্ট কিছু সম্পর্কে?