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
7
A
risposta
1
Il ciclo di eventi in node.js non supporta le priorità. Vedi un po 'di documentazione:
corto di riscriverlo, non credo che ci sia molto che si possa fare a tale proposito.
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.
Un esempio di codice potrebbe essere d'aiuto. – tikider
Esempio aggiunto per favore controllalo. – Sanket
Perché dovresti farlo? – neelsg