0

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

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

你知道这样的中间件吗?

谢谢,李

4

2 回答 2

0

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

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

确保将其放在app.router. 那是你要找的吗?

于 2012-10-22T13:32:30.690 回答
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 -> 请求代码。

不是你要找的东西?

于 2012-10-22T12:13:18.420 回答