Gibt es eine Möglichkeit, wie man die Node.js-Tasks in einer Ereignisschleife priorisieren kann. Ich möchte Aufgaben Priorität zuweisen, die in einer Ereignisschleife von nodejs vorhanden sind.
Angenommen, in einer Ereignisschleife gibt es 5 Jobs A, B, C, D, E, die dieselbe Priorität haben und dann den nächsten Job erhalten, dessen Priorität höher als die letzten fünf Jobs ist. Dann startet die Ereignisschleife den Job mit höherer Priorität.Priorität der Nodejs-Tasks in einer Ereignisschleife zuweisen
7
A
Antwort
1
Die Ereignisschleife in node.js unterstützt keine Prioritäten. Siehe eine Dokumentation:
Kurz es neu zu schreiben, ich glaube nicht, es gibt viel Sie tun können.
2
Sie sollen eine Prioritätswarteschlange verwenden, so etwas wie priorityqueuejs
Auf diese Weise können Sie ein Element mit der max Priorität aus der Warteschlange entfernt und ausführen.
Einige Code:
'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);
}
}
})();
Und der Ausgang ist:
PRIORITY: 500
PRIORITY: 300
PRIORITY: 100
PRIORITY: 10
Hier ist die executeNext
Funktion extrahiert die nächste Top-Priorität Element und führt sie aus.
Verwandte Themen
- 1. Fehler beim Erstellen einer untergeordneten Ereignisschleife
- 2. Qt Ereignisschleife und Komponententest?
- 3. Angular - Ereignisschleife verhindern?
- 4. Javascript-Ereignisschleife. Klärungsbedarf
- 5. express bodyParser blockierende Ereignisschleife
- 6. Zuordnung Priorität zu den Aufgaben
- 7. Wie verwenden Sie AIO und epoll in einer einzigen Ereignisschleife?
- 8. Überlegungen zur Priorität der Planung
- 9. Zuweisen einer Variablen in der Bedingung einer while-Schleife - scala
- 10. Sellerie - Aufgaben, die in der Priorität
- 11. Festlegen der Priorität für Anwendungspools in IIS
- 12. Standardargument v Vorlagen Priorität in der Überladungsauflösung
- 13. Reihenfolge der Router-Priorität in express.js
- 14. Eine externe Ereignisschleife mit Qt
- 15. Die Priorität der CSS-Selektoren
- 16. Priorität der Operatoren:> und ==
- 17. Run tornado.testing.AsyncTestCase mit asyncio Ereignisschleife
- 18. Sicherer Weg zum Ändern der Priorität einer NSOperation
- 19. Tipps zum Deduplizieren einer Liste basierend auf der Priorität Spalte
- 20. setTimeout-Callback ausgelöst in demselben Tick der Ereignisschleife?
- 21. Einheit Test Priorität, Werkzeuge, Metriken
- 22. Asynchrone Ereignisschleife Design und Probleme
- 23. Asyncio RuntimeError: Ereignisschleife ist geschlossen
- 24. jQuery Slider onclick Ereignisschleife Fotos
- 25. NSURLSession Priorität
- 26. FullTrust einer Baugruppe zuweisen
- 27. Erläuterung der Node.js-Ereignisschleife. process.nextTick() wurde nie aufgerufen. Warum?
- 28. Zuweisen Länge einer Liste der Parameter einer Funktion
- 29. Priorität für benutzerdefinierte seriell asynchrone Warteschlange festlegen
- 30. Nginx Server Namen Priorität
Ein Codebeispiel würde helfen. – tikider
Beispiel hinzugefügt, bitte überprüfen Sie es. – Sanket
Warum sollten Sie das tun? – neelsg