2014-09-30 13 views
7

Esiste un modo in cui è possibile applicare la priorità all'attività Node.js in un ciclo di eventi. Voglio assegnare la priorità all'attività che sono presenti in un ciclo di eventi di nodejs.
Supponiamo che in un ciclo di eventi ci siano 5 lavori A, B, C, D, E che hanno la stessa priorità e quindi viene ricevuto il lavoro successivo la cui priorità è superiore agli ultimi cinque lavori. Quindi il ciclo di eventi inizia a eseguire quel lavoro con priorità più alta.Assegna priorità alle attività nodejs in un ciclo di eventi

+0

Un esempio di codice potrebbe essere d'aiuto. – tikider

+0

Esempio aggiunto per favore controllalo. – Sanket

+0

Perché dovresti farlo? – neelsg

risposta

2

si dovrebbe usare una coda di priorità, qualcosa come priorityqueuejs

In questo modo è possibile annullare l'accodamento di un elemento con la priorità massima ed eseguirlo.

Alcuni codice:

'use strict'; 

var PriorityQueue = require('priorityqueuejs'); 

var queue = new PriorityQueue(function(a, b) { 
    return a.value - b.value; 
}); 

queue.enq({ value: 10, func: function() { console.log("PRIORITY: 10"); } }); 
queue.enq({ value: 500, func: function() { console.log("PRIORITY: 500"); } }); 
queue.enq({ value: 300, func: function() { console.log("PRIORITY: 300"); } }); 
queue.enq({ value: 100, func: function() { console.log("PRIORITY: 100"); } }); 

(function executeNext() { 
    if(queue.size()) { 
    var next = queue.deq(); 
    next.func(); 
    if(queue.size()) { 
     setTimeout(executeNext, 0); 
    } 
    } 
})(); 

e l'uscita è:

PRIORITY: 500 
PRIORITY: 300 
PRIORITY: 100 
PRIORITY: 10 

Ecco la funzione executeNext estrae l'elemento successivo massima priorità e lo esegue.

Problemi correlati