Asynchronous এবং Synchronous বড় টপিক। এখানে এইদুটো জিনিশ কি আর কিভাবে কাজ করে তার ছোট করে উদাহরণ দিব।
# Synchronous
আমার বন্ধু প্রিতম Pran-RFL এ চাকরী করে। ওরে ফোন দিয়ে বললাম মামা গরমে অতিস্ট হয়ে আসি। ফ্যান কিনা লাগবে একটা, তোদের কোম্পানির ফ্যানের দাম কেমন? প্রিতম MIS এ। এগুলা নিয়ে ওর ধারনা কম কিন্তু ডাটাবেজ চেক করে ও জানাতে পারে। আমি ওকে রিকোয়েস্ট করার পর সে বলল Hold কর জানাচ্ছি। আমি ফোন ধরে বসে রইলাম। কতক্ষণ পরে সে আমাকে জানালো।
একই জিনিস হয় যখন আমরা 'normal' function call করি। যেমন
function findItem(){
var item
while(item_not_found){
//search
}
return item
}
var item = findItem()
//do something with item
doSomethingElse()
এখানে findItem() অনেক লম্বা সময় নিতে পারে response দিতে। var item = findItem() এর পর যত কোড আছে সেগুলো execute হতে findItem() এর return/response এর জন্য অপেক্ষা করতে হয়।
# Asynchronous
প্রিতমকে আবার আরেকদিন ফোন দিয়ে বললাম মামা গরমতো আরো বেশী বেড়ে গেছে তোদের কোম্পানির AC এর প্রাইসটা জানা। ওকে যখন ফোন দিসি আমি তখন বাসে উঠার লাইন এ এবং বাস চলে আসছে। আমাকে ফোন রেখে দিতে হবে তাই বললাম আমাকে যেনে জানাইস এরপর ফোন রেখে দিসি। এরপর আমি বাসে উঠার যুদ্ধে সামিল হলাম। প্রিতম কিছুক্ষণ পরে জেনে আমাকে ফোন দিল যে এই এই হল দাম। এখন এই তথ্য নিয়ে আমি যা করার করব। Asynchronous এর কাজ এরকম।
readFile("example.txt", function(err, contents) {
if (err) {
throw err;
}
console.log(contents);
});
console.log("Hi!");
readFile() এ দুটো আর্গুমেন্ট পাস করা হয়েছে। একটা example.txt আরেকটা anonymous ফাংশন। readFile() ডিস্ক থেকে example.txt ফাইলটা রিড করে callback(সেকেন্ড আর্গুমেন্ট) করবে। তো asynchronous behave এর জন্য readFile() call হলে এটা example.txt পড়া শুরু করে এর পর পরই console.log("Hi") প্রিন্ট হয়ে যাবে console.log(contents) কিছু প্রিন্ট করার আগেই। এরপর readFile() যদি example.txt পড়া শেষ করে তাহলে callback fucntion console.log(contents) প্রিন্ট করে। এই কংন্সেপ্ট টাই asynchronous.

