এই লেখাটি Node.js-এ অ্যাসিঙ্ক্রোনাস নিয়ন্ত্রণ প্রবাহের কাজ এবং বাস্তবায়ন ব্যাখ্যা করে।
Node.js এ অ্যাসিঙ্ক্রোনাস কন্ট্রোল ফ্লো কি?
Node.js-এ অ্যাসিঙ্ক্রোনাস কন্ট্রোল ফ্লো বলতে বোঝায় আপনি যেভাবে অ্যাসিঙ্ক্রোনাস ক্রিয়াকলাপগুলির সাথে কাজ করার সময় এক্সিকিউশনের প্রবাহ পরিচালনা এবং নিয়ন্ত্রণ করেন, যেমন নেটওয়ার্ক অনুরোধ করা, ইভেন্টগুলি পরিচালনা করা ইত্যাদি। যদিও Node.js বিশেষভাবে একটি অ্যাসিঙ্ক্রোনাস প্রকৃতির জন্য ডিজাইন করা হয়েছে তবে নির্দিষ্ট কোডটি উদ্দেশ্যমূলক ক্রমানুসারে কার্যকর হয় এবং কার্যকরভাবে ত্রুটি পরিচালনা করে তা নিশ্চিত করা ভাল।
অ্যাসিঙ্ক্রোনাস কন্ট্রোল প্রবাহের বোধগম্যতার মাত্রা বাড়ানোর জন্য একটি কোড উদাহরণ দেওয়া যাক:
fsObj ছিল = প্রয়োজন ( 'এফএস' ) ;
//বিমূর্ত কলব্যাক ফাংশন
ফাংশন readFileAsync ( টার্গেটফাইলপাথ ) {
ফিরে নতুন প্রতিশ্রুতি ( ( সমাধান করা, প্রত্যাখ্যান করা ) => {
fsObj. ফাইল পড়া ( টার্গেটফাইলপাথ, 'UTF-8' , ( ত্রুটি, বিষয়বস্তু ) => {
যদি ( ত্রুটি ) {
প্রত্যাখ্যান ( ত্রুটি ) ;
} অন্য {
সমাধান ( বিষয়বস্তু ) ;
}
} ) ;
} ) ;
}
// ক্রমানুসারে একাধিক ফাইল রিড করার ফাংশন
async ফাংশন readFileSequentially ( ) {
চেষ্টা করুন {
const ফাইল 1 ডেটা = ReadFileAsync অপেক্ষা করুন ( 'mynewfile1.txt' ) ;
কনসোল লগ ( 'প্রথম ফাইল ডেটা:' , ফাইল 1 ডেটা ) ;
const ফাইল 2 ডেটা = ReadFileAsync অপেক্ষা করুন ( 'usecase.txt' ) ;
কনসোল লগ ( 'দ্বিতীয় ফাইল ডেটা:' , file2Data ) ;
const ফাইল 3 ডেটা = ReadFileAsync অপেক্ষা করুন ( 'package.json' ) ;
কনসোল লগ ( 'তৃতীয় ফাইল ডেটা:' , file3Data ) ;
} ধরা ( ত্রুটি ) {
কনসোল ত্রুটি ( 'সংঘটিত ত্রুটি:' , ত্রুটি ) ;
}
}
ক্রমানুসারে ফাইল পড়ুন ( ) ;
উপরের কোডের ব্যাখ্যা নিম্নরূপ:
- প্রথমে, আমদানি করুন ' fs 'মডিউল এবং এর বস্তুকে 'এ সংরক্ষণ করুন fsObj ' পরিবর্তনশীল।
- তারপর, একটি সংজ্ঞায়িত করুন ' readFileAsync() ' নামের একটি ফাংশন যার একক প্যারামিটার আছে ' টার্গেটফাইলপাথ যা একটি লক্ষ্যযুক্ত ফাইলের পথ ধারণ করে।
- এই ফাংশনটি একটি ' প্রতিশ্রুতি 'যাতে দুটি পরামিতি সমন্বিত প্রয়োজনীয় কলব্যাক ফাংশন রয়েছে ' সমাধান ' এবং ' প্রত্যাখ্যান ”
- কলব্যাক ফাংশনের ভিতরে, ' ফাইল পড়া() 'প্রদত্ত পদ্ধতি' fs 'মডিউল। এছাড়াও, 'এর প্রদত্ত প্যারামিটারটি পাস করুন টার্গেটফাইলপাথ 'রিডফাইল()' পদ্ধতির জন্য প্রথম প্যারামিটার হিসাবে।
- দ্য ' ফাইল পড়া ' পদ্ধতিতে প্রয়োজনীয় কলব্যাক ফাংশনও রয়েছে যার পরামিতি রয়েছে ত্রুটি ' এবং ' বিষয়বস্তু ” পাস ' ত্রুটি ' মধ্যে ' প্রত্যাখ্যান() 'ত্রুটি হওয়ার ক্ষেত্রে পদ্ধতি এবং' বিষয়বস্তু ' মধ্যে ' সমাধান() 'কোন খুঁজে পাওয়া ত্রুটি ক্ষেত্রে পদ্ধতি.
- এখন, 'নামের একটি অ্যাসিঙ্ক্রোনাস ফাংশন তৈরি করুন ReadFileSequentially() 'এবং এতে একটি ' ধরার চেষ্টা কর 'ব্লক।
- ভিতরে ' চেষ্টা করুন ' ব্লক করুন, ইতিমধ্যে তৈরি করা 'কে আহ্বান করে জেনারেট করা ফলাফল সংরক্ষণ করে তিনটি ভেরিয়েবল তৈরি করুন' readFileAsync() ' ফাংশন। প্রতিবার এই ফাংশন বন্ধনীর ভিতরে কাঙ্খিত ফাইলের পাথ যা এক্সিকিউট করতে হবে।
- কীওয়ার্ড ' অপেক্ষা করা ফাইলটি পড়ার ক্রিয়া শেষ না হওয়া পর্যন্ত নিয়ন্ত্রণ প্রবাহ বন্ধ করার জন্য আহ্বান করার সময় ফাংশনের পিছনে ”ও স্থাপন করা হয়।
- এছাড়াও, পুনরুদ্ধার করা বা পড়ার ফাইল সামগ্রী প্রদর্শন করতে কনসোলে ভেরিয়েবলগুলি প্রদর্শন করুন।
- অবশেষে, 'ধারণ' ReadFileSequentially() ' ফাংশন।
এক্সিকিউট করার জন্য, আপনার কাঙ্খিত ফাইলে উপরে উল্লেখিত কোড রাখুন যার একটি এক্সটেনশন “ .js আপনার Node.js প্রজেক্টের ভিতরে থাকা। আমাদের ক্ষেত্রে প্রধান ফাইল হল ' controlFlow.js ', সুতরাং আমাদের মৃত্যুদন্ডের আদেশ নিম্নরূপ হবে:
নোড নিয়ন্ত্রণ প্রবাহ। js
উৎপন্ন আউটপুট দেখায় যে অসিঙ্ক্রোনাস কন্ট্রোল ফ্লো ব্যবহার করে পছন্দসই ফাইলগুলির জন্য ডেটা ক্রমানুসারে প্রদর্শিত হয়:
Node.js ব্লকড কোডের সম্ভাব্য কারণ এবং এড়িয়ে চলার পদক্ষেপগুলি কী কী?
সিঙ্ক্রোনাস কোডটি '' নামেও পরিচিত ব্লক কোড ” যেহেতু এটি চলমান প্রক্রিয়ার নির্বাহ না হওয়া পর্যন্ত প্রক্রিয়াগুলির নির্বাহ বন্ধ করে দেয়। এর ফলে অ্যাপ্লিকেশন কর্মক্ষমতা এবং প্রতিক্রিয়াশীলতা দুর্বল হয়। ব্লকিং কোড সাধারণত সিঙ্ক্রোনাস বা সিপিইউ-বাউন্ড অপারেশনের কারণে ঘটে। কোড ব্লক করার সম্ভাব্য কারণগুলি এবং কীভাবে সেগুলি এড়ানো যায় তা নীচে টেবিলে উল্লেখ করা হয়েছে:
কোড ব্লকিং এর কারণ | কোড ব্লকিং জন্য সমাধান |
সিঙ্ক্রোনাস ফাইল অপারেশনের ব্যবহার যেমন fs.readFileSync()। | fs.readFile এর মত অ্যাসিঙ্ক্রোনাস ফাইল অপারেশন ব্যবহার করুন। |
ভারী গণনা বা দীর্ঘ-চলমান লুপগুলির মতো CPU- আবদ্ধ অপারেশনগুলির ব্যবহার। | সিপিইউ-বাউন্ড টাস্কগুলিকে কর্মী থ্রেডগুলিতে ছোট, নন-ব্লকিং খণ্ডে বিভক্ত করে অফলোড করুন। |
দূরবর্তী API-তে HTTP অনুরোধের ব্যবহারের কারণে ধীর বাহ্যিক নেটওয়ার্ক অনুরোধ | Axios বা বিল্ট-ইন “http” বা “https” মডিউলের মতো অ্যাসিঙ্ক্রোনাস HTTP লাইব্রেরি ব্যবহার করুন। |
অঅপ্টিমাইজ করা ডাটাবেস প্রশ্ন | ডাটাবেস দ্বারা প্রদত্ত ক্যোয়ারী অপ্টিমাইজেশন টুল ব্যবহার করে ডাটাবেস কোয়েরি অপ্টিমাইজ করুন। |
বিরতি ছাড়াই অসীম লুপ বা টাইট লুপের ব্যবহার। | নিশ্চিত করুন যে লুপগুলির প্রস্থান শর্ত রয়েছে এবং অসীমভাবে চলবে না। |
উপসংহার
অ্যাসিঙ্ক্রোনাস কন্ট্রোল ফ্লো কীওয়ার্ডগুলি ব্যবহার করে ' async/অপেক্ষা করুন ” একটি অ্যাসিঙ্ক্রোনাস পদ্ধতিতে সম্পাদনের প্রবাহ পরিবর্তন বা নিয়ন্ত্রণ করতে। প্রয়োজনীয় অ্যাসিঙ্ক্রোনাস পদ্ধতির জন্য কলব্যাক বিমূর্ত এবং একটি পৃথক ফাংশনে সংরক্ষণ করা হয়। এই ফাংশনটি তারপরে await কীওয়ার্ডের সাহায্যে একটি ক্রমানুসারে অন্যান্য পদ্ধতির সাথে পছন্দসই পদ্ধতিতে আহ্বান করা হয়। এই ফাংশনগুলি অন্য একটি কাস্টম অ্যাসিঙ্ক্রোনাস ফাংশনে সংরক্ষণ করা হয় যা তারপরে সম্পাদন শুরু করার জন্য আহ্বান করা হয়। এই গাইডটি Node.js-এ অ্যাসিঙ্ক্রোনাস কন্ট্রোল ফ্লো ব্যাখ্যা করেছে।