将任务推送到async.queue会阻止express.js服务器

时间:2015-01-20 09:19:36

标签: javascript node.js express async.js

我有以下代码。

var queue = require('async').queue(function(task, callback) {
  console.log("QUEUED JOB STARTED");
  require('sleep').sleep(10);
  console.log("QUEUED JOB FINISHED");
  callback();
}, 1);

router.post('/generate/', function(request, result) {
  console.log("REQUEST RECEIVED");
  queue.push({});
  result.end();
  console.log("REQUEST PROCESSED");
});

当第一个请求到来时,会立即处理。但是当下一个出现在第一个之后,服务器会等到排队的作业完成(10秒),因此输出为:

REQUEST RECEIVED
REQUEST PROCESSED
QUEUED JOB STARTED
QUEUED JOB FINISHED
REQUEST RECEIVED
REQUEST PROCESSED
QUEUED JOB STARTED
QUEUED JOB FINISHED

是否可以让Node.js入队并回答第二个请求而无需等待第一个请求实现以下输出?

REQUEST RECEIVED
REQUEST PROCESSED
REQUEST RECEIVED
REQUEST PROCESSED
QUEUED JOB STARTED
QUEUED JOB FINISHED
QUEUED JOB STARTED
QUEUED JOB FINISHED

0 个答案:

没有答案