nodejs:需要在处理请求之前完成操作

时间:2012-10-22 10:43:50

标签: node.js

我的应用需要先执行一些操作(一次),然后才开始处理请求并运行其他操作。 我正在寻找一些能够获得第一个动作和一堆处理程序的中间件。它应该首先调用该动作,并且只有在它完成时它将调用所有处理程序而不再调用第一个动作。

编辑:假设我的第一个动作需要一段时间。我可以在第一个操作的回调中注册app.get处理程序,但是在我的第一个操作完成之前到达的任何请求都将丢失。相反,我想将请求存储在队列中,直到第一个操作完成,然后才在待处理请求上调用处理程序。之后,我希望我的中间件自行删除,以便只有请求处理程序才能处理新请求。

你知道这样的中间件吗?

谢谢, 李

2 个答案:

答案 0 :(得分:0)

嗯......不确定我是否理解正确,但是......

var done = false;
function myFunc () {
   if (done==true)break;
   //your code
   console.log('First');
   //your code
   done=true;
}

app.get('/desk/settings', myFunc, function(req, res) { 
   console.log('Second');
});

Reuest - >中间件myFunc - >请求代码。

不是您要找的?

答案 1 :(得分:0)

您可以像这样创建自己的中间件:

app.use(function(req, res, next) {
  console.log('first');
  if (firstIsReady) {
    next();
  } else {
    res.redirect('/error')
  }
})

确保将其放在app.router之前。那是你在找什么?