NodeJS Express - 想要在单一路径上运行处理程序两次

时间:2016-05-25 03:47:48

标签: javascript node.js loops express

我有一个路由router.get('/generateDoc', handleRequest);,我想两次运行这个handleRequest。有人可以建议我如何解决这种情况。

以下是我的代码示例。

function handleRequest(req, res, next) {
    for (var i = 0; i < 2; i++) {
        cacheService.clean();
        PdfController.generatePDfs(req, res, next);
    }
}

2 个答案:

答案 0 :(得分:2)

要求很奇怪,但你可以这样做:

function handleRequestInnards(req, res, next) {
  cacheService.clean();
  PdfController.generatePDfs(req, res, next);
}

function handleRequest(req, res, next) {
  handleRequestInnards(req, res, function() {
    handleRequestInnards(req, res, next);
  });
}

你可以在像Bluebird这样的库中获得更多的运气,你可以将它作为一个承诺并执行以下操作:

function handleRequest(req, res, next) {
  Promise.all([
    handleRequest(req, res),
    handleRequest(req, res)
  ]).asCallback(next);
}

答案 1 :(得分:1)

我认为您也可以只添加两次中间件:

router.get('/generateDoc', handleRequest, handleRequest);