জাভাস্ক্রিপ্ট কলব্যাক (JS Callback)

Web Development - জাভাস্ক্রিপ্ট (JavaScript) জাভাস্ক্রিপ্ট অ্যাসিঙ্ক (JS Async) |
258
258

জাভাস্ক্রিপ্টে কলব্যাক (Callback) হল একটি ফাংশন যা অন্য একটি ফাংশনের আর্গুমেন্ট হিসেবে পাস করা হয় এবং নির্দিষ্ট অপারেশন সম্পন্ন হওয়ার পর এক্সিকিউট হয়। এটি অ্যাসিঙ্ক্রোনাস প্রোগ্রামিংয়ের একটি মূল ভিত্তি, যা কোডকে আরও নমনীয় এবং কার্যকর করে তোলে।


কলব্যাকের কাজ কিভাবে করে

কলব্যাক ফাংশনগুলি মূলত নির্দিষ্ট কাজ সম্পন্ন করার পরে অন্য ফাংশনকে নোটিফাই করতে ব্যবহৃত হয়। উদাহরণস্বরূপ, ডেটা লোড করার পরে UI আপডেট করা বা কোনো ইভেন্ট ঘটলে নির্দিষ্ট কার্য সম্পন্ন করা।

উদাহরণ:

function fetchData(callback) {
    setTimeout(() => {
        const data = { name: "আলিস", বয়স: ২৫ };
        callback(data);
    }, ২০০০);
}

function displayData(data) {
    console.log("ডেটা:", data);
}

fetchData(displayData);  // আউটপুট: ডেটা: { name: 'আলিস', বয়স: ২৫ }

এখানে, fetchData ফাংশনটি ২ সেকেন্ড পর displayData কলব্যাক ফাংশনটি এক্সিকিউট করে।


কলব্যাকের প্রকারভেদ

সিঙ্ক্রোনাস কলব্যাক

সিঙ্ক্রোনাস কলব্যাকগুলি সেই ফাংশনগুলি যা কল করা হয় এবং তাৎক্ষণিকভাবে এক্সিকিউট হয়।

function greet(callback) {
    console.log("হ্যালো!");
    callback();
}

function sayGoodbye() {
    console.log("বিদায়!");
}

greet(sayGoodbye);
// আউটপুট:
// হ্যালো!
// বিদায়!

অ্যাসিঙ্ক্রোনাস কলব্যাক

অ্যাসিঙ্ক্রোনাস কলব্যাকগুলি সেই ফাংশনগুলি যা ভবিষ্যতে এক্সিকিউট হয়, যেমন নেটওয়ার্ক রিকোয়েস্ট বা টাইমার অপারেশন সম্পন্ন হওয়ার পরে।

function fetchData(callback) {
    setTimeout(() => {
        const data = { name: "বব", বয়স: ৩০ };
        callback(data);
    }, ৩০০০);
}

function displayData(data) {
    console.log("ডেটা:", data);
}

fetchData(displayData);  // আউটপুট: ডেটা: { name: 'বব', বয়স: ৩০ }

কলব্যাকের সুবিধা

অ্যাসিঙ্ক্রোনাস অপারেশন হ্যান্ডল করা

কলব্যাকগুলি অ্যাসিঙ্ক্রোনাস অপারেশনগুলিকে সঠিকভাবে হ্যান্ডল করতে সহায়তা করে, যেমন ডেটা ফেচ করা বা ইভেন্ট হ্যান্ডল করা।

কোডের পুনঃব্যবহারযোগ্যতা বৃদ্ধি

কলব্যাক ফাংশনগুলি কোডকে আরও মডুলার এবং পুনঃব্যবহারযোগ্য করে তোলে, যা বড় প্রকল্পগুলিতে কোড ম্যানেজমেন্ট সহজ করে।

ইভেন্ট ড্রিভেন প্রোগ্রামিং সমর্থন

কলব্যাকগুলি ইভেন্ট ড্রিভেন প্রোগ্রামিংকে সমর্থন করে, যেখানে ইভেন্টের ভিত্তিতে ফাংশনগুলি এক্সিকিউট হয়।


কলব্যাক হেল (Callback Hell)

কলব্যাক হেল হল একটি সমস্যা যেখানে বহু স্তরের কলব্যাক ফাংশনগুলি নেস্টেড থাকে, যা কোডের পাঠযোগ্যতা এবং রক্ষণাবেক্ষণযোগ্যতা কমিয়ে দেয়। এটি প্রধানত অ্যাসিঙ্ক্রোনাস অপারেশনগুলিকে একের পর এক পরিচালনা করার সময় ঘটে।

উদাহরণ:

fetchData(function(data) {
    processData(data, function(result) {
        saveData(result, function(status) {
            console.log("ডেটা সংরক্ষিত হয়েছে:", status);
        });
    });
});

এই রকম নেস্টেড কলব্যাকগুলি কোডকে জটিল এবং অস্পষ্ট করে তোলে, যা ডিবাগিং এবং রক্ষণাবেক্ষণকে কঠিন করে তোলে।


কলব্যাক হেল থেকে মুক্তি

কলব্যাক হেল এড়াতে বিভিন্ন পদ্ধতি ব্যবহার করা যেতে পারে, যেমন:

প্রমিসেস (Promises)

প্রমিসেস কলব্যাকগুলির তুলনায় আরও সুশৃঙ্খল এবং পাঠযোগ্য কোড লেখার সুযোগ দেয়।

function fetchData() {
    return new Promise((resolve, reject) => {
        setTimeout(() => {
            const success = true;
            if (success) {
                resolve({ name: "চার্লি", বয়স: ৩৫ });
            } else {
                reject("ডেটা লোড করতে ব্যর্থ হয়েছে।");
            }
        }, ২০০০);
    });
}

fetchData()
    .then(data => {
        console.log("ডেটা:", data);
    })
    .catch(error => {
        console.error("ত্রুটি:", error);
    });

অ্যাসিঙ্ক/অওয়েইট (Async/Await)

async এবং await কিওয়ার্ডগুলি প্রমিসেসের উপর ভিত্তি করে কাজ করে এবং অ্যাসিঙ্ক্রোনাস কোডকে সিঙ্ক্রোনাস কোডের মত লেখার সুবিধা দেয়।

async function getData() {
    try {
        const data = await fetchData();
        console.log("ডেটা:", data);
    } catch (error) {
        console.error("ত্রুটি:", error);
    }
}

getData();  // আউটপুট: ডেটা: { name: 'চার্লি', বয়স: ৩৫ }

কলব্যাকের সীমাবদ্ধতা

ত্রুটি পরিচালনার অসুবিধা

কলব্যাক ফাংশনে ত্রুটি পরিচালনা করা কিছুটা জটিল হতে পারে, বিশেষ করে যখন কলব্যাকগুলি নেস্টেড থাকে।

পাঠযোগ্যতার অভাব

বহু স্তরের নেস্টেড কলব্যাকগুলি কোডকে জটিল এবং অস্পষ্ট করে তোলে, যা কোডের পাঠযোগ্যতা কমিয়ে দেয়।


সারাংশ

জাভাস্ক্রিপ্টে কলব্যাক ফাংশনগুলি অ্যাসিঙ্ক্রোনাস অপারেশনগুলি হ্যান্ডল করতে এবং কোডকে আরও নমনীয় ও পুনঃব্যবহারযোগ্য করতে অপরিহার্য। যদিও কলব্যাকগুলি অনেক সুবিধা প্রদান করে, তবুও নেস্টেড কলব্যাকগুলি কোডকে জটিল এবং অস্পষ্ট করে তোলে, যা কলব্যাক হেল নামে পরিচিত। প্রমিসেস এবং অ্যাসিঙ্ক/অওয়েইট এর মতো আধুনিক ফিচারগুলি কলব্যাক হেল এড়াতে এবং আরও সুশৃঙ্খল ও পাঠযোগ্য অ্যাসিঙ্ক্রোনাস কোড লেখার সুযোগ দেয়। কলব্যাকগুলি জাভাস্ক্রিপ্টের অ্যাসিঙ্ক্রোনাস প্রোগ্রামিংয়ের একটি মূল ভিত্তি হলেও, সেগুলির সঠিক ব্যবহারের মাধ্যমে কোডের কার্যকারিতা এবং স্থায়িত্ব নিশ্চিত করা যায়।

common.content_added_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion