总是在expressjs中运行中间件

尼桑·索扬(Nisanth Sojan)

我希望expressjs middlware始终执行。即使next()是否存在错误也是如此。

是否有可能?

例子

app.get('/',[middle1,middle2],doIt)

即使middle1错误执行下一个,Middle2也应始终执行。

注意:middle2应该始终在最后执行,并采用以前的中间件计算出的值。在Middle1和Middle2之间也有很多中间件。

jfriend00

如果middle1已知它不使用任何从其调用next()的异步操作,则可以对其进行包装并对其进行尝试/捕获,以便在抛出该异常时,可以next()代表它进行调用

如果它确实使用异步操作,或者您不知道它是否将使用异步操作,那么只有在它异步抛出(在异步之前)时,您才能捕获它的异常,并且您将无法捕获它异步抛出的任何异常。对于异步行为,您能做的最好的事情就是在包装器中设置某种超时。如果next()在一段时间内没有调用它(要么是因为它引发了异常,要么是由于其他原因而失败了),那么您可以在超时时间之后调用下一个。

包装非异步middle1可能看起来像这样:

function wrap(fn) {
    return function(req, res, next) {
        var nextCalled = false;
        try {
            fn(req, res, function() {
                nextCalled = true;
                next();
            });
        } finally {
            if (!nextCalled) {
                next();
            }
        }
    }
}

app.get('/',[wrap(middle1),middle2],doIt);

wrap()函数插入一个存根作为中间件函数。该螺柱会插入自己的next()函数,以便可以判断是否调用了实际的中间件函数next()然后,它将异常处理程序包装在中间件函数周围,因此,如果它同步引发异常,则可以恢复。函数返回后,它会检查是否next()被调用,如果没有,则调用它。

如前所述,这种方法仅在中间件功能是同步的时才有效。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

总是在expressjs中运行中间件

来自分类Dev

尝试登录时,我的后卫总是在自定义中间件中返回null

来自分类Dev

在 NodeJS/ExpressJS 的中间件中调用中间件

来自分类Dev

expressjs中的中间件功能错误

来自分类Dev

ExpressJS日志中间件

来自分类Dev

ExpressJS 中间件 | req.params 在中间件中不可用?

来自分类Dev

cookie会话中间件如何在expressjs中工作?

来自分类Dev

在ExpressJS中间件中修改req.path

来自分类Dev

在ExpressJS中设置请求清除中间件

来自分类Dev

expressjs-使用中间件功能

来自分类Dev

烧瓶中的中间件

来自分类Dev

机架中间件中的机架中间件?

来自分类Dev

是否可以针对ExpressJS中的特定路由禁用/删除中间件?

来自分类Dev

ExpressJS中的路由处理程序和中间件函数有什么区别?

来自分类Dev

在ExpressJS中传递Javascript amqplib通道来路由中间件

来自分类Dev

是否可以针对ExpressJS中的特定路由禁用/删除中间件?

来自分类Dev

在ExpressJS中处理多个child_process的中间件时出错处理

来自分类Dev

expressjs 编写多个中间件并导入到主文件中

来自分类Dev

一个中间件中的许多功能 expressjs restful api

来自分类Dev

等待运行 Saga 中间件

来自分类Dev

访问ExpressJS / ConnectJS中间件内部的“ app”变量?

来自分类Dev

Expressjs-使用中间件处理错误

来自分类Dev

ExpressJS:承诺和错误处理中间件

来自分类Dev

中间件是NodeJS还是ExpressJS(或类似的概念)?

来自分类Dev

如何从中间件将错误返回给ExpressJS?

来自分类Dev

ExpressJS-从中间件发送响应

来自分类Dev

在中间件中获取路由定义

来自分类Dev

OWIN中间件中的URL重写

来自分类Dev

Express 4中的中间件顺序

Related 相关文章

热门标签

归档