async মডিউল একটি nodejs অ্যাপ্লিকেশনে অ্যাসিঙ্ক্রোনাস জাভাস্ক্রিপ্টের সাথে কাজ করার জন্য বিভিন্ন কার্যকারিতা প্রদান করে। async.queue() পদ্ধতিটি একটি সারি প্রদান করে যা পরবর্তী প্রক্রিয়াগুলির সমসাময়িক প্রক্রিয়াকরণের জন্য যেমন একটি সময়ে/তাত্ক্ষণিক আইটেমগুলির একাধিক প্রক্রিয়াকরণের জন্য ব্যবহৃত হয়৷
async.queue()
ইনস্টল এবং ব্যবহার করাধাপ 1 - নোড প্যাকেজ ম্যানেজার শুরু করতে নিম্নলিখিত কমান্ডটি চালান।
npm init
ধাপ 2 - নিম্নলিখিত কমান্ড ব্যবহার করে async মডিউল ইনস্টল করা হচ্ছে।
npm install --save async
ধাপ 3 - আপনার প্রোগ্রামে নিচের বিবৃতি ব্যবহার করে অ্যাসিঙ্ক মডিউল আমদানি করা হচ্ছে।
const async = require('async')
সিনট্যাক্স
async.queue('function', 'concurrency value')
পরামিতি
উপরের পরামিতিগুলি নীচে −
হিসাবে বর্ণনা করা হয়েছে-
ফাংশন – এই প্যারামিটারটি ফাংশনকে সংজ্ঞায়িত করে যা সারিতে যোগ করা উপাদানের উপর কার্যকর করা হবে।
-
সঙ্গতি মান – এই ক্ষেত্রটি একটি সময়ে প্রক্রিয়াকরণ করা উপাদানগুলির সংখ্যা নির্ধারণ করে৷
async.queue() পদ্ধতিতে আরও একাধিক পদ্ধতি এবং বৈশিষ্ট্য রয়েছে যা অ্যাসিঙ্ক অনুরোধগুলি প্রক্রিয়া করার সময় ব্যবহার করা হবে৷
-
ধাক্কা (উপাদান, কলব্যাক) - একটি সাধারণ সারির মতোই, পুশ পদ্ধতিটি একটি সারির লেজে একটি উপাদান যোগ করার জন্য ব্যবহৃত হয়।
queue.push(item, callback);
-
দৈর্ঘ্য() - দৈর্ঘ্য পদ্ধতিটি একবারে একটি সারিতে উপস্থিত উপাদানগুলির সংখ্যা ফেরত দেওয়ার জন্য ব্যবহৃত হয়৷
queue.length()
-
শুরু সম্পত্তি - এই বৈশিষ্ট্যটি একটি বুলিয়ান মান প্রদান করে যে সারি সম্পর্কে তথ্য প্রদান করে যে এটি এর উপাদানগুলি প্রক্রিয়াকরণ শুরু করেছে কিনা।
queue.started()
-
আনশিফ্ট (উপাদান, কলব্যাক) - আনশিফ্ট প্রপার্টি পুশ() পদ্ধতির মতো সারিতে একটি উপাদান যোগ করে। উভয়ের মধ্যে পার্থক্য হল - এটি মাথায় উপাদান যুক্ত করে যেখানে পুশ এটি লেজে যোগ করে। এই পদ্ধতিটি অগ্রাধিকার উপাদানগুলির জন্য ব্যবহৃত হয়৷
৷
queue.unshift(item, callback)
-
ড্রেন() পদ্ধতি - এই পদ্ধতিটি একটি কলব্যাক ইস্যু করে যখন সারিটি সমস্ত কার্য/উপাদান সম্পাদন করে। এটি তখনই কাজ করে যখন ফাংশনটি একটি তীর ফাংশনে বর্ণিত হয়৷
queue.drain(() => { console.log(“All Tasks are completely executed...”); }
-
পজ() পদ্ধতি এই পদ্ধতিটি সারিতে থাকা অবশিষ্ট উপাদানগুলির সম্পাদন করে। resume() কল করার পরে ফাংশনটি চলতে থাকবে।
queue.pause()
-
resume() পদ্ধতি - এই পদ্ধতিটি পজ() পদ্ধতি ব্যবহার করে আটকে রাখা উপাদানগুলির সম্পাদন পুনরায় শুরু করার জন্য ব্যবহৃত হয়।
queue.resume()
-
হত্যা () পদ্ধতি - এই পদ্ধতিটি সারির সমস্ত অবশিষ্ট উপাদানগুলিকে সরিয়ে দেয় এবং এটিকে একটি নিষ্ক্রিয় অবস্থায় বাধ্য করে৷
৷
queue.kill()
-
অলস() পদ্ধতি - এই পদ্ধতিটি একটি বুলিয়ান অবস্থা প্রদান করে যা নির্দেশ করে যে সারিটি নিষ্ক্রিয় বা কিছু প্রক্রিয়া করা হচ্ছে কিনা৷
queue.idle
উদাহরণ
উপরের ধারণাগুলি আরও ভালভাবে বোঝার জন্য আসুন একটি উদাহরণ দেখি -
// Including the async module const async = require('async'); // Creating an array for all elements execution const tasks = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; // Initializing the queue const queue = async.queue((task, executed) => { console.log("Currently Busy Processing Task " + task); setTimeout(()=>{ // Number of tasks remaining and to be processed const tasksRemaining = queue.length(); executed(null, {task, tasksRemaining}); }, 1000); }, 1); // concurrency value = 1 // Queue is idle initially as no elements are there... console.log(`Queue Started ? ${queue.started}`) // Adding each task from the tasks list tasks.forEach((task)=>{ // Adding the task 5 to the head for priority execution if(task == 5){ queue.unshift(task, (error, {task, tasksRemaining})=>{ if(error){ console.log(`An error occurred while processing task ${task}`); }else { console.log(`Finished processing task ${task}. ${tasksRemaining} tasks remaining`); } }) // Adding all the tasks at tail to be executed except task 5 } else { queue.push(task, (error, {task, tasksRemaining})=>{ if(error){ console.log(`An error occurred while processing task ${task}`); }else { console.log(`Finished processing task ${task}. ${tasksRemaining} tasks remaining`); } }) } }); // Executes the callback when the queue is done processing all the tasks queue.drain(() => { console.log('All items are succesfully processed !'); }) // Checking if the queue is started after adding tasks console.log(`Queue Started ? ${queue.started}`)
আউটপুট
C:\home\node>> node asyncQueue.js Queue Started ? False Queue Started ? True Currently Busy Processing Task 5 Finished processing task 5. 9 tasks remaining Currently Busy Processing Task 1 Finished processing task 1. 8 tasks remaining Currently Busy Processing Task 2 Finished processing task 2. 7 tasks remaining Currently Busy Processing Task 3 Finished processing task 3. 6 tasks remaining Currently Busy Processing Task 4 Finished processing task 4. 5 tasks remaining Currently Busy Processing Task 6 Finished processing task 6. 4 tasks remaining Currently Busy Processing Task 7 Finished processing task 7. 3 tasks remaining Currently Busy Processing Task 8 Finished processing task 8. 2 tasks remaining Currently Busy Processing Task 9 Finished processing task 9. 1 tasks remaining Currently Busy Processing Task 10 Finished processing task 10. 0 tasks remaining All items are succesfully processed !