node-web-mvc
Version:
node spring mvc
34 lines (33 loc) • 1.22 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
class DefaultFilterChain {
createDefer() {
const runtime = { promise: null, resolve: null, reject: null };
runtime.promise = new Promise((resolve, reject) => {
runtime.resolve = resolve;
runtime.reject = reject;
});
return runtime;
}
constructor(filters) {
this.filters = filters;
this.nextIndex = 0;
this.doFilter = this.internalDoFilter;
}
async internalDoFilter(request, response) {
const filter = this.filters[this.nextIndex];
this.nextIndex++;
const defer = this.createDefer();
this.doFilter = (request, response) => {
defer.resolve(this.internalDoFilter(request, response));
return defer.promise;
};
if (filter === null || filter === void 0 ? void 0 : filter.doFilter) {
await filter.doFilter(request, response, this);
// 用于解决,在filter中执行chain.doFilter时不用进行return promise连接
await defer.promise;
}
// 没有doFilter 则直接返回
}
}
exports.default = DefaultFilterChain;