node-web-mvc
Version:
node spring mvc
34 lines (33 loc) • 1.12 kB
JavaScript
;
/**
* @module Middlewares
* @description 返回一个类似express中间件类型的中间件结果
*/
Object.defineProperty(exports, "__esModule", { value: true });
class Middlewares {
execute(req, resp, fallback) {
return new Promise((resolve, reject) => {
const request = req.nativeRequest;
const response = resp.nativeResponse;
const middlewares = [
...this.middlewares,
() => resolve(fallback === null || fallback === void 0 ? void 0 : fallback()),
];
const handler = middlewares.reverse().reduce((next, middleware) => {
return () => {
try {
middleware(request, response, (ex) => (ex ? reject(ex) : next()));
}
catch (ex) {
reject(ex);
}
};
});
handler(request, response, resolve);
});
}
constructor(middlewares) {
this.middlewares = middlewares;
}
}
exports.default = Middlewares;