Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> Javascript

async.queue() Node.js में विधि

<घंटा/>

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 !

  1. Queue.CopyTo () सी # में विधि

    C# में Queue.CopyTo() विधि का उपयोग कतार तत्वों को मौजूदा एक-आयामी सरणी में कॉपी करने के लिए किया जाता है, जो निर्दिष्ट सरणी अनुक्रमणिका से शुरू होता है। सिंटैक्स वाक्य रचना इस प्रकार है - public virtual void CopyTo (Array arr, int index); ऊपर, पैरामीटर arr एक-आयामी सरणी है जो कि Queue से कॉपी किए

  1. Queue.Contains () विधि सी # में

    C# में Queue.Contains() विधि का उपयोग यह निर्धारित करने के लिए किया जाता है कि कोई तत्व कतार में है या नहीं। सिंटैक्स वाक्य रचना इस प्रकार है - public virtual bool Contains (object ob); ऊपर, पैरामीटर ob वह वस्तु है जिसे कतार में खोजना है। उदाहरण आइए अब एक उदाहरण देखें - using System; using System

  1. Queue.Synchronized () विधि सी # में

    C# में Queue.Synchronized() विधि का उपयोग एक नई कतार को वापस करने के लिए किया जाता है जो मूल कतार को लपेटता है और थ्रेड-सुरक्षित है। सिंटैक्स वाक्य रचना इस प्रकार है - public static System.Collections.Queue Synchronized (System.Collections.Queue queue); ऊपर, पैरामीटर कतार सिंक्रनाइज़ करने के लिए क