我为Connect和Express编写了一个中间件,它的设置方法需要一些繁重的工作。由于初始化任务的性质,这些东西是异步的,所以我遇到的问题是,只有在初始化运行之后,才能访问中间件。
目前我已经使用回调函数解决了这个问题:
function setupMiddleware(callback) {
doSomeAsyncInitialization(function () {
callback(function (req, res, next) {
// The actual middleware goes here ...
});
});
}
这是可行的,但它对来电者不好。而不是能够做到:
app.use(setupMiddleware());
我必须做:
setupMiddleware(functin (middleware) {
app.use(middleware);
});
现在我在想是否有更好的方法,例如。让中间件在后台初始化,并延迟所有传入的请求,直到中间件准备好。
我该怎么解决这个问题?有什么想法或最佳实践我应该在这里使用吗?
2条答案
按热度按时间jfgube3f1#
现在我使用一个
isInitialized
变量并延迟中间件函数本身来解决这个问题。请参见以下示例:请注意,这段代码没有以任何方式进行优化或重构,它只是一个演示,说明这个想法本身是可行的。
j13ufse22#
为什么你不像下面这样做,