2016-01-08 2 views
0

Я начал использовать kue/node.js. Я проверил учебник, и это был этот кодkue node.js поведение рабочих заданий

var kue = require('kue') 
    , queue = kue.createQueue(); 

function newJob(){ 
    var job = queue.create('new_job'); 
    job.save(); 
} 

queue.process('new_job', function (job, done){ 
    console.log('Job', job.id, 'is done'); 
    done && done(); 
}) 


setInterval(newJob, 3000); 

Так когда я запускаю это из моего терминала - узел test.js, я будет выводить «задания {идентификатор задания} выполняется» каждые 3 секунды.

Теперь я изменил код на следующие

var kue = require('kue') 
     , queue = kue.createQueue(); 

    var job = queue.create('new_job'); 
    job.save(); 

    queue.process('new_job', function (job, done){ 
     console.log('Job', job.id, 'is done'); 
     done && done(); 
    }) 

Я удалил функцию newJob и setInterval, я ожидал, что код будет выполняться один раз, потому что я создать очередь и сохранить работу первым, а затем я обработает это ниже. но когда я запускаю код с терминала, ничего не происходит, нет вывода.

Почему я не получаю ожидаемый результат? какова логика этого. пожалуйста, объясни . заранее спасибо .

ответ

0

Это потому, что «new_job» создается до того, как создан процесс «new_job». При создании очереди после создания процесса слушателя, он должен работать, как например:

var kue = require('kue') 
    , queue = kue.createQueue(); 

queue.process('new_job', function (job, done){ 
    console.log('Job', job.id, 'is done'); 
    done && done(); 
}) 

var job = queue.create('new_job'); 
job.save(); 
+0

ммм, я попытался с помощью кода еще один и тот же результат :( –

+0

Добавление процесса слушателя queue.process может быть асинхронным так queue.create ('new_job') не может быть зарегистрирован. Что делать, если вы завершаете последние две строки следующим образом: setTimeout (function() {var job = queue.create ('new_job'); job.save();}) – tsuz

+0

Still тоже самое ..... –

Смежные вопросы