কলব্যাক ফাংশন ব্যাবহার অ্যাসিনক্রোনাস ফাংশন তৈরি 

setTimeout() ব্যাবহার করে আমরা একটা Synchronus behaviour কে Asynchronous behavior এ পরিবর্তন করতে পারি। setTimeout() এটি একটি ফাংশন রিসিভ করে প্যারামিটার হিসেবে। আর ঐ ফাংশনটিকে আমরা বলছি কলব্যক ফাংশন। কলব্যক ফাংশন শুধু Asynchronous behavior না বরং Synchronus behaviour ব্যবহার করা হয়। বিশ্বাস হচ্ছে না চলুন দেখে আসি। 

console.log("First")
setTimeout(()=>{
   console.log("second")
})
console.log("Third")

উপরের কোডটিতে setTimeout() এর ভিতরে যে ফাংশন ব্যবহার

 করা হয়েছে নিঃসন্দেহে কলব্যক ফাংশন। কলব্যক ফাংশনটি

 এখানে Asynchronous behavior প্রদর্শন করছে । এবার নিচের কোড

 টি লক্ষ্য করি 

console.log("First")
let arr = [76949]
arr.forEach((value)=> {
    console.log(value)
})
console.log('Third')

উপরের কোডটিতে forEach() ভিতরে একটি ফাংশন দেয়া হয়েছে

 এটাও কলব্যক ফাংশন কিন্তু এখানে এটি Synchronus behaviour

 প্রদর্শন করছে ।
  
 console.log("First")
function add(a,b) {
    setTimeout(()=>{
        return a+b
    },2000)
}
console.log(add(5,7))
console.log("Third")

এখানে কোডটা রান করে দেখেন আউটপুট Undefine আসবে।

 কারন add() ফাংশনটি ভ্যালু রিটার্ন করবে ২ সেকেন্ড পরে কিন্তু

 পরের কোডটি console.log(add(5,7)) তো আর বসে থাকবে না

 এজন্য Undefine দেখাচ্ছে। এখন একটু চিন্তা করি সার্ভার থেকে

 ডাটা আসতে সময় লাগবে তার আগেই যদি আউটপুট কোডটি রান

 হয় । তখন তো ইউজার কোন ডাটাই দেখতে পাবে না । এজন্য

 আমরা চাচ্ছি  অউটপুট কোডটিকে control করার জন্য। অন্য

 কোডগুল আগে রান হোক তাতে কোন সমস্য নেই কারন সেগুলোর

 সাথে সার্ভার থেকে আনা ডেটার কোন সম্পর্ক নেই। এজন্য

 আউটপুট কোড টিকে আমরা একটা ফাংশনের ভিতরে রেখে

 ফাংশনটিকে কলব্যাক হিসেবে ব্যাবহার করব ।

 console.log("First")
function add(a,bcallback) {
    setTimeout(()=>{
        let c=a+b
        callback(c)
    },2000)
}
let value = add(46function(value){
    console.log(value)
})
console.log("Third")

এই কোডটির আউটপুট দখেন আর Undefine আসবে না।

 Asynchronou এর উদ্দেশ্য কোডের রান হওয়ার Flow কে Control

 করা। এই control টা আমরা কলব্যাক ফাংশনের মাধ্যমে করলাম।

 এরকম আর হাজার সংখ্যক কলব্যক ফাংশন ব্যবহার করা লাগতে

 পারে । তখন কোন ফাংশনের কলব্যক কোনটি ডিবাগ করার সময়

 খুজে পেতে অনেক কষ্ট হবে । এজন্য আমরা Promise

 ব্যাবহার করব এরপর আমরা Promise দেখব। এটি কলব্যকের

 আপডেট ভার্সন।