UNPKG

node-web-mvc

Version:
34 lines (33 loc) 1.22 kB
"use strict"; 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;