Javascript 为事件循环中的nodejs任务分配优先级

Javascript 为事件循环中的nodejs任务分配优先级,javascript,node.js,event-loop,Javascript,Node.js,Event Loop,是否有任何方法可以将优先级应用于事件循环中的Node.js任务。 我想为NodeJ的事件循环中存在的任务分配优先级。 假设在事件循环中有5个具有相同优先级的作业a、B、C、D、E,然后接收到优先级高于最后5个作业的下一个作业。然后事件循环开始执行优先级较高的作业。中的事件循环不支持优先级。请参阅一些文档: 除了重写它之外,我认为你对此无能为力。你应该使用优先级队列,比如 通过这种方式,您可以将具有最大优先级的项出列并执行它 一些代码: 'use strict'; var Priorit

是否有任何方法可以将优先级应用于事件循环中的Node.js任务。 我想为NodeJ的事件循环中存在的任务分配优先级。
假设在事件循环中有5个具有相同优先级的作业a、B、C、D、E,然后接收到优先级高于最后5个作业的下一个作业。然后事件循环开始执行优先级较高的作业。

中的事件循环不支持优先级。请参阅一些文档:


除了重写它之外,我认为你对此无能为力。

你应该使用优先级队列,比如

通过这种方式,您可以将具有最大优先级的项出列并执行它

一些代码:

'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);
    }
  }
})();
输出为:

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

以下是
executeNext
函数提取下一个最高优先级项并执行它。

一个代码示例会有所帮助。添加的示例请检查。为什么需要这样做?@neelsg:是一个众所周知的问题,有很多应用程序实际上在我的应用程序中,多个函数并行执行,即在事件循环中。如果有一些重要的高优先级函数,我希望这些函数先被执行,然后再被执行。