async मॉड्यूल एक नोडज एप्लिकेशन में एसिंक्रोनस जावास्क्रिप्ट के साथ काम करने के लिए विभिन्न कार्यक्षमता प्रदान करता है। async.queue() विधि एक कतार लौटाती है जिसका उपयोग प्रक्रियाओं के समवर्ती प्रसंस्करण के लिए किया जाता है यानी एक समय/तत्काल में वस्तुओं की एकाधिक प्रसंस्करण।
async.queue () को स्थापित करना और उसका उपयोग करना
चरण 1 - नोड पैकेज मैनेजर को इनिशियलाइज़ करने के लिए निम्न कमांड चलाएँ।
npm init
चरण 2 - निम्नलिखित कमांड का उपयोग करके async मॉड्यूल स्थापित करना।
npm install --save async
चरण 3 − अपने प्रोग्राम में नीचे दिए गए कथन का उपयोग करके async मॉड्यूल को आयात करना।
const async = require('async') सिंटैक्स
async.queue('function', 'concurrency value') पैरामीटर
उपरोक्त पैरामीटर नीचे वर्णित हैं -
-
फ़ंक्शन - यह पैरामीटर उस फ़ंक्शन को परिभाषित करता है जिसे क्यू में जोड़े गए तत्व पर निष्पादित किया जाएगा।
-
समवर्ती मान - यह फ़ील्ड एक बार में संसाधित किए जाने वाले तत्वों की संख्या को परिभाषित करती है।
async.queue() विधि में आगे कई विधियाँ और गुण हैं जिनका उपयोग async अनुरोधों को संसाधित करते समय किया जाएगा।
-
पुश (तत्व, कॉलबैक) - एक सामान्य कतार के समान, पुश विधि का उपयोग कतार के अंत में एक तत्व जोड़ने के लिए किया जाता है।
queue.push(item, callback);
-
लंबाई() - एक समय में कतार में मौजूद तत्वों की संख्या को वापस करने के लिए लंबाई विधि का उपयोग किया जाता है।
queue.length()
-
शुरू की गई संपत्ति - यह गुण एक बूलियन मान देता है जो कतार के बारे में जानकारी प्रदान करता है कि उसने अपने तत्वों को संसाधित करना शुरू कर दिया है या नहीं।
queue.started()
-
अनशिफ्ट (तत्व, कॉलबैक) - अनशिफ्ट संपत्ति भी एक पुश () विधि की तरह कतार में एक तत्व जोड़ती है। दोनों के बीच एकमात्र अंतर यह है कि यह सिर पर तत्वों को जोड़ता है जबकि धक्का इसे पूंछ में जोड़ता है। इस विधि का उपयोग प्राथमिकता वाले तत्वों के लिए किया जाता है।
queue.unshift(item, callback)
-
नाली () विधि - जब कतार ने सभी कार्यों/तत्वों को निष्पादित किया है तो यह विधि कॉलबैक जारी करती है। यह केवल तभी काम करता है जब फंक्शन को एरो फंक्शन में वर्णित किया जाता है।
queue.drain(() => {
console.log(“All Tasks are completely executed...”);
} -
रोकें () विधि यह विधि कतार में शेष तत्वों का निष्पादन रखती है। रिज्यूमे () कहे जाने के बाद भी फंक्शन जारी रहेगा।
queue.pause()
-
फिर से शुरू करें () विधि - इस विधि का उपयोग उन तत्वों के निष्पादन को फिर से शुरू करने के लिए किया जाता है जिन्हें पॉज़ () विधि का उपयोग करके रोक दिया गया था।
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 !