Node.js Event Loop

Node.js - I/O

একটি ঘটনা লুপ কি?

ইভেন্ট লুপ যা Node.js কে নির্বিঘ্ন এবং দক্ষ করে তোলে।

এটি সিস্টেমে অ্যাসিঙ্ক্রোনাস ক্রিয়াকলাপগুলি অর্পণ করে এবং কলব্যাকের মাধ্যমে তাদের ফলাফলগুলি প্রক্রিয়া করে, Node.js-কে একটি একক থ্রেডের সাথে হাজার হাজার সমসাময়িক সংযোগ পরিচালনা করতে দেয়।

বিরামহীন আন্দোলন

দীর্ঘ I/O অপারেশন মূল থ্রেড ব্লক করে না

উচ্চ দক্ষতা

কম সংস্থান সহ আরও কর্মক্ষমতা

একাধিক লিঙ্ক

একযোগে হাজার হাজার সংযোগ পরিচালনা করে

কলব্যাক বেস

কলব্যাক সহ অপারেশন পরিচালনা করে

ইভেন্ট লুপ কিভাবে কাজ করে?

Node.js :

1

মূল স্ক্রিপ্ট চালান

প্রথমে সিঙ্ক্রোনাইজেশন কোড চালান

সমস্ত সিঙ্ক্রোনাইজেশন কোড অবিলম্বে কার্যকর করা হবে

2

মাইক্রোটাস্ক চালান

প্রতিশ্রুতি এবং process.nextTick ফাংশন

এগুলি উচ্চ অগ্রাধিকারের

3

টাইমার চালু করুন

setTimeout এবং setInterval ফাংশন

নির্দিষ্ট সময় বিলম্বের পরে সক্রিয়

4

I/O কলব্যাক সক্ষম করুন

ফাইল সিস্টেম, নেটওয়ার্ক অপারেশন

সম্পূর্ণ I/O অপারেশনের কলব্যাক

5

প্রক্রিয়া অবিলম্বে কলব্যাক সেট

setImmediate() ফাংশন

I/O কলব্যাকের পরে অবিলম্বে কার্যকর করা হয়

6

বন্ধ ঘটনা হ্যান্ডেল

socket.on('close')

সংযোগ বন্ধ পরিষ্কার করে

উদাহরণ: ইভেন্ট লুপ সিকোয়েন্স

কোড:

console.log('First');
setTimeout(() => console.log('Third'), 0);
Promise.resolve().then(() => console.log('Second'));
console.log('Fourth');

এটি চলমান ক্রম প্রদর্শন করে:

1

সিঙ্ক্রোনাইজেশন কোড প্রথমে চলে

'First', 'Fourth'

2

মাইক্রোটাস্ক (প্রতিশ্রুতি) পরবর্তী ধাপের আগে চলে

'Second'

3

টাইমার শেষ চালানো হবে

'Third'

💡গুরুত্বপূর্ণ নোট:

সেটটাইমআউটে 0 মিলিসেকেন্ড নির্দিষ্ট করা থাকলেও, এটি শুধুমাত্র সিঙ্ক্রোনাইজেশন কোডের পরেই কার্যকর করা হবে কারণ এটি ইভেন্ট লুপের টাইমার ফেজে পাস করা হয়েছে।

ইভেন্ট লুপ পর্যায়গুলি

ইভেন্ট লুপ এই ক্রমে বিভিন্ন ধরনের কলব্যাক প্রক্রিয়া করে:

টাইমার

setTimeout, setInterval

প্রথম পর্যায়

I/O কলব্যাক

I/O অপারেশন সম্পন্ন হয়েছে

দ্বিতীয় পর্যায়

হিসাবে

নতুন I/O ইভেন্ট পুনরুদ্ধার করে

তৃতীয় পর্ব

সেকেন্ড

তাৎক্ষণিক কলব্যাক সেট করুন

চতুর্থ পর্যায়

বন্ধ

ক্লিনআপ কলব্যাক (যেমন socket.on('close'))

শেষ পর্যায়

⚠️দ্রষ্টব্য:

প্রতিটি পর্যায়ের মধ্যে, Node.js মাইক্রোটাস্ক (প্রতিশ্রুতি) এবং process.nextTick কলব্যাকগুলি সম্পাদন করে।

উদাহরণ: ইভেন্ট লুপ গ্রিড

কোড:

console.log('1. Start');

// Next tick queue
process.nextTick(() => console.log('2. Next tick'));

// Microtask queue (Promise)
Promise.resolve().then(() => console.log('3. Promise'));

// Timer phase
setTimeout(() => console.log('4. Timeout'), 0);

// Check phase
setImmediate(() => console.log('5. Immediate'));

console.log('6. End');

আউটপুট হবে:

1. Start
6. End
2. Next tick
3. Promise
4. Timeout
5. Immediate

এটি অগ্রাধিকারের ক্রম দেখায়:

  • সিঙ্ক্রোনাইজেশন কোড- প্রথমে রান
  • process.nextTick- উচ্চ অগ্রাধিকার
  • Promises- পরবর্তী অগ্রাধিকার
  • টাইমার- ঘটনা লুপ পর্যায়ক্রমে
  • ফেজ চেক করুন- অবশেষে

ইভেন্ট লুপ কেন গুরুত্বপূর্ণ?

ইভেন্ট লুপ Node.js-কে একটি একক থ্রেডের সাথে হাজার হাজার সমসাময়িক সংযোগ পরিচালনা করতে দেয়, যা এটির জন্য আদর্শ করে তোলে:

রিয়েল টাইম অ্যাপ্লিকেশন

তাত্ক্ষণিক যোগাযোগ প্রয়োজন যে অ্যাপ্লিকেশন

এপিআই এবং মাইক্রোসার্ভিসেস

যে পরিষেবাগুলি একযোগে একাধিক অনুরোধ পরিচালনা করে৷

ডেটা স্ট্রিমিং

খণ্ডে বড় তথ্য প্রক্রিয়াকরণ

চ্যাট অ্যাপ্লিকেশন

একাধিক ব্যবহারকারীর কাছে তাত্ক্ষণিক বার্তাপ্রেরণ

সারাংশ

Node.js

বিভিন্ন ধরণের কলব্যাকের বিভিন্ন অগ্রাধিকার রয়েছে

মাইক্রোটাস্ক (প্রতিশ্রুতি) পরবর্তী ইভেন্ট লুপ পর্বের আগে চলে

এই নিরবচ্ছিন্ন মডেল উচ্চ সঙ্গতি সংযোগ সক্ষম করে

অনুশীলন করুন

সঠিক শব্দ চয়ন করুন।

ইভেন্ট লুপ Node.js এর জন্য______I/O ক্রিয়াকলাপ সম্পাদন করার অনুমতি দেয়।

বাধাহীন
✓ ঠিক আছে! ইভেন্ট লুপ Node.js-কে নির্বিঘ্ন I/O অপারেশন করতে দেয়
সিঙ্ক্রোনাইজেশন
✗ ভুল! Node.js হল অ্যাসিঙ্ক্রোনাস এবং সিমলেস, সিঙ্ক্রোনাস নয়
প্রতিরোধ
✗ ভুল! Node.js-এর একটি প্রধান বৈশিষ্ট্য হল নির্বিঘ্ন I/O
ক্রম
✗ ভুল! Node.js সহজাতভাবে অ্যাসিঙ্ক্রোনাস এবং সমান্তরাল