【JavaScript】实现类似Express的中间件系统
// 定义一个简单的中间件系统
class SimpleMiddleware {
constructor() {
this.middlewares = [];
}
use(middleware) {
this.middlewares.push(middleware);
}
// 执行所有中间件
async compose() {
for (const middleware of this.middlewares) {
await middleware();
}
}
}
// 使用示例
const middlewareSystem = new SimpleMiddleware();
// 添加中间件
middlewareSystem.use(() => {
console.log('Middleware 1: Started');
return new Promise((resolve) => {
setTimeout(() => {
console.log('Middleware 1: Finished');
resolve();
}, 1000);
});
});
middlewareSystem.use(() => {
console.log('Middleware 2: Started');
return new Promise((resolve) => {
setTimeout(() => {
console.log('Middleware 2: Finished');
resolve();
}, 1000);
});
});
// 执行所有中间件
middlewareSystem.compose();
这段代码定义了一个简单的中间件系统,可以添加多个中间件函数,并按照添加的顺序依次执行它们。每个中间件都必须返回一个Promise,以便我们可以在其解析后继续执行下一个中间件。这个实现没有考虑错误处理,如果中间件中发生错误,它将不会被传递到下一个中间件,并且整个compose
方法也不会reject。在实际应用中,你应该在中间件函数中处理错误,并适当地传递它们。
评论已关闭