2014-09-30 13 views
7

Bir olay döngüsünde Node.js görevinin önceliğini uygulayabilmenin herhangi bir yolu var mı? nodejs olay döngüsünde bulunan göreve öncelik atamak istiyorum.
Bir olay döngüsünde, aynı önceliğe sahip olan ve ardından önceliği son beş işten daha yüksek olan bir sonraki işin alındığı 5 iş A, B, C, D, E olduğunu varsayalım. Sonra olay döngüsü bu yüksek öncelikli işi yürütmeye başlar.Bir olay döngüsünde nodejs görevlerine öncelik atama

+0

Bir kod örneği yardımcı olur. – tikider

+0

Eklenmiş örnek Lütfen kontrol edin. – Sanket

+0

Bunu neden yapmalısınız? – neelsg

cevap

2

Bir öncelik sırası kullanmalısınız, bu sayede gibi bir şey priorityqueuejs

Eğer maksimum öncelikli bir öğe sıradan çıkarma ve çalıştırmak.

Bazı kod:

'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); 
    } 
    } 
})(); 

Ve çıktısı:

İşte
PRIORITY: 500 
PRIORITY: 300 
PRIORITY: 100 
PRIORITY: 10 

executeNext işlevi sonraki en öncelikli öğesi ayıklar ve çalıştırır olduğunu.