我正在编写一个中间件,它将执行一系列操作。序列完成后,我希望中间件调用 next()。从这一点上中间件是多余的。我编写了以下代码:(这里的动作序列通过调用 setTimeout 来模拟):
function myMiddleware(req, res, next){
console.info("inside myMiddleware");
if (actionDone) {
console.info("middleware redundant. ActionDone, calling next");
next();
}
setTimeout(doneWaiting, 30000);
function doneWaiting(){
actionDone = true;
next();
}
}
此代码将不起作用,因为如果在操作完成之前有多个请求到达,则会一次又一次地调用 setTimeout。我希望 setTimeout 只被调用一次,并且只有在它完成后,我才想对迄今为止到达的所有请求调用 next() 。
实现这一目标的最佳方法是什么?
谢谢,李