const sync = () =>{
console.log('Task two Completed');
var currentTime = new Date().getTime()
while(currentTime + 3000 >= new Date().getTime());
console.log('Task three Completed')
}
console.log('Task One Completed')
sync();
console.log('All Tasks Completd');
সবার প্রথমে একটা মেইন ফাঙ্কশন কল হয়। .যেকনো জাভাস্ক্রিপ্ট কোড রান হবার আগে একটা মেইন ফাঙ্কশন রান হয়.
এরপর লাইন বই লাইন বিভিন্ন জায়গায় কলগুলো হয়.
এখানে প্রথমে কল হয়েছে console.log('Task One Completed'); ফাঙ্কশন ..
লগ এর আগে sync এর যে বডিটা দেখা যাচ্ছে এটা হচ্ছে ফাঙ্কশন এর ডেফিনেশন এখানে আমরা কেনো ফাঙ্কশন কল করিনি।
জাভাস্ক্রিপ্ট এক্সকিউশন শুরু হবে console.log('Task One Completed'); থেকে তারপর সে লগ ফাঙ্কশনটাকে কল স্টকে কল করবে
তারপর কনসোলএ Task One Completed প্রিন্ট হবে।
এরপর লগ ফাঙ্কশন এর কাজ শেষ তারপর জাভাস্ক্রিপ্ট পরের লাইনে যাবে।
তারপর সে sync() ফাঙ্কশনকে দেখতে পাবে।
তারপর sync() ফাঙ্কশনকে সে কলস্ট্যাকে নিয়ে আসবে।
তারপর সে sync ফাঙ্কশন এর ভিতরে যাবে তারপর সে সেখানে console.log('Task two Completed'); ফাঙ্কশন দেখতে পাবে
তারপর সে console.log('Task two Completed'); ফাঙ্কশনটাকে কল স্টকে নিয়ে আসবে তারপর কনসোল এ Task two Completed প্রিন্ট হবে।
তারপর জাভাস্ক্রিপ্ট পরের লাইন যাবে তখন সে দেখবে ৩ সেকেন্ডের একটা while লুপ।
তখন ওই ৩ সেকেন্ড ব্রাউজারের পুরো একটিভিটি ব্লক হয়ে থাকবে তখন ইউসার ব্রাউজারে কোনো ক্লিক করতে পারবে না...ইউসারও ব্রাউজারে ব্লকড হয়ে থাকবে।
এটাই হচ্ছে জাভাস্ক্রিপ্ট এর ব্লকিং বিহেভিয়ার।
তারপর ৩ সেকেন্ড শেষ হবার পর সে কল স্ট্যাক কল করবে তারপর কনসোল এ Task three Completed প্রিন্ট হবে।
তারপর কল স্ট্যাক থেকে sync ফাঙ্কশনটা চলে যাবে
তারপর console.log('All Tasks Completd'); কল স্টকে আসবে।
তারপর কনসোল এ All Tasks Completd প্রিন্ট হবে