অ্যাসিঙ্ক্রোনাস ফাংশন, প্রোগ্রাম চলতে থাকে। এটি অপেক্ষা করে না! এভাবে ব্যবহারকারীর অপেক্ষা সময় কমে। এছাড়া জাভাস্ক্রিপ্ট নিজে একটি অ্যাসিঙ্ক্রোনাস প্রোগ্রামিং ল্যাঙ্গুয়েজ।
উদাহরণস্বরূপ, যদি কোডে একটি এক্সপেনসিভ রিকোয়েস্ট রান করি যেটি অনেক সময় নিতে পারে, তবে অ্যাসিঙ্ক্রোনাস ফাংশন না হলে অপেক্ষা সময় খুব বেশি হতো এবং ব্যবহারকারী অন্য কিছু করতে পারত না!
সেজন্য সাধারণত এক্সপেনসিভ ও টাইম-কনসামিং অপারেশন করার সময় অ্যাসিঙ্ক্রোনাস কোড ব্যবহার করা পছন্দ করা হয়।
জাভাস্ক্রিপ্টে অ্যাসিঙ্ক্রোনাস ফাংশনের একটি উদাহরণ -
উদাহরণ
console.log('One'); jQuery.get('page.html', function (data) { console.log("Two"); }); console.log('Three');
আউটপুট
One, Two, Three
এখন, Node-এ ইভেন্ট লুপ কী তা দেখি।
ইভেন্ট লুপ একটি থ্রেড শিডিউলে তৈরি হয় যা নির্দিষ্ট করে কোন সময় কোন অপারেশন থ্রেড পারফর্ম করবে।
যেকোনো Node.js অ্যাপ্লিকেশন বিভিন্ন ইভেন্টের প্রতিক্রিয়া হিসেবে এক্সিকিউট হওয়া কলব্যাকে সমৃদ্ধ যেমন: ইনকামিং কানেকশন, I/O কমপ্লিশন, টাইমআউট এক্সপায়ারি, প্রমিস রেজোলিউশন ইত্যাদি। মেইন থ্রেড (যেটি এখন আমরা জানি ইভেন্ট লুপ) এই সব কলব্যাক এক্সিকিউট করে।
ইভেন্ট লুপ রান করার সময়, প্রতি ইটারেশনে Node চেক করে যে কি এটি কোনো অ্যাসিঙ্ক্রোনাস I/O বা টাইমারের জন্য অপেক্ষা করছে। আর যদি কিছু না পায়, তবে Node সেগুলো শাট ডাউন করে দেয়।