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 を削除しました。最初にキューを作成してジョブを保存してから、以下で処理するため、コードが 1 回実行されることを期待していました。しかし、端末からコードを実行しても何も起こらず、出力もありません。

期待した結果が得られないのはなぜですか? この背後にあるロジックは何ですか。説明してください 。前もって感謝します 。

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 に答える