我开始使用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,我希望代码只运行一次,因为我首先创建队列并保存作业,然后在下面处理它。但是,当我从终端运行代码时,什么也没有发生,没有输出。
为什么我得不到预期的结果?这背后的逻辑是什么。请解释一下。提前谢谢。
发布于 2016-01-08 11:53:39
这是因为'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();https://stackoverflow.com/questions/34669130
复制相似问题