首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >kue node.js处理作业行为

kue node.js处理作业行为
EN

Stack Overflow用户
提问于 2016-01-08 11:42:32
回答 1查看 320关注 0票数 0

我开始使用kue/node.js。我查看了一个教程,里面有这样的代码

代码语言:javascript
复制
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“。

现在,我将代码更改为以下代码

代码语言:javascript
复制
    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,我希望代码只运行一次,因为我首先创建队列并保存作业,然后在下面处理它。但是,当我从终端运行代码时,什么也没有发生,没有输出。

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

EN

回答 1

Stack Overflow用户

发布于 2016-01-08 11:53:39

这是因为'new_job‘是在创建进程侦听器'new_job’之前创建的。如果您在创建进程监听器之后创建队列,它的工作方式应该是这样的:

代码语言:javascript
复制
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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34669130

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档