const processOrder = () =>{
console.log(`Processing Order for customer One`);
setTimeout(() => {
console.log(`Cooking completd`);
}, 3000);
console.log(`Order Processed for Customer One`);
};
console.log(`Take Order for Customer One`);
processOrder();
console.log(`Order Completed for Customer One`);
Synchronous প্রোগ্রামিংয়ে একটি কাজ সম্পন্ন হবার পর অন্য একটা কাজে মুভ করবে।.
যদি একটি কাজ সম্পন্ন না হয় সে অন্য একটি কাজে মুভ করবে না..
জাভাস্ক্রিপ্টে একটা বিহেভিয়ার রয়েছে সেটাকে বলা হয় ব্লকিং বিহেভিয়ার।.
অনেক সময় আমাদের ডাটাবেস থেকে ডাটা নিয়ে আসতে হয় বা API কল করে কোনো একটা ডাটা লোড করতে হয়
তখন প্রোগ্রাম রান করতে ৩-৪ সেকেন্ড সময় নিতে পারে সেটা ব্লক হয়ে থাকবে ।
যেটার কারণে বাকি প্রোগ্র্যাম গুলো রান হবে না
Synchronous এ একটি প্রোগ্রাম যতসময় পর্যন্ত শেষ না হয় সে অন্য একটি প্রোগ্রামে মুভ করতে পারবে না।
এখন আমরা চাচ্ছি যে আমাদের বাকি প্রোগ্রাম গুলো স্টপ না হয়ে সেগুলো রান করুক মাল্টি থ্রেডেড হয়ে
কিন্তু এই জিনিসটা আমরা
Synchronous এ সেটা করতে পারবো না
সেটার জন্য আমাদেরকে Asynchronous ব্যবহার করতে হবে.
সেটার জন্য আমাদেরকে SetTimeOut ব্যবহার করতে হবে এটা Asynchronous এর ফাঙ্কশন
জাভাস্ক্রিপ্ট কোড যখন ব্রাউজার এর ভিতরে রান হয় তখন জাভাস্ক্রিপ্ট কোড প্রথমে মেশিন ল্যাংগুয়েজে কনভার্ট হয়।
তারপর ব্রাউজার সেটা বুঝতে পারে
মেশিন ল্যাঙ্গুয়েজে কনভার্ট হওয়ার জন্য ব্রাউজার এর ভিতরে কোনো না কোনো একটা মেকানিসম আছে।
ব্রাউজার এর ভিতরে মূলত দুইটা জিনিস থাকে একটা হচ্ছে রান টাইম এনভিরমেন্ট।
রান টাইম এনভিরমেন্ট ছাড়া ব্রাউসার এর ভিতরে আরেকটা জিনিসটা থাকে
যেটা আমাদের জাভাস্ক্রিপ্ট কোডেকে মেশিন ল্যাঙ্গুয়েজে কোডে রূপান্তরিত করে
সেটা হচ্ছে ব্রাউজার এর ইঞ্জিন।
প্রত্যেকটা ব্রাউজারের কিন্তু আলাদা আলাদা একটা ইঞ্জিন আছে।
আবার ইঞ্জিন এর মধ্যে একটা জিনিস থাকে সেটা হচ্ছে কল স্ট্যাক।