0

我开始使用 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 秒输出一次“job { job id } is done”。

现在我将代码更改为以下

    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 ,我希望代码会运行一次,因为我先创建队列并保存作业,然后我将在下面处理它。但是当我从终端运行代码时没有任何反应,没有输出。

为什么我没有得到预期的结果?这背后的逻辑是什么。请解释 。提前致谢 。

4

1 回答 1

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();
于 2016-01-08T03:53:38.987 回答