UNPKG

node-web-mvc

Version:
55 lines (54 loc) 1.64 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const requestSymbol = Symbol('request'); const responseSymbol = Symbol('response'); class ServletContext { /** * 当前正在处理的请求实例 */ get request() { return this[requestSymbol]; } /** * 当前正在处理的请求的返回实例 */ get response() { return this[responseSymbol]; } get isRequestHandled() { return this.response.headersSent; } /** * 构造一个上下文实例 * @param request 当前正在处理的请求实例 * @param response 当前正在处理的请求的返回实例 * @param next 跳转到下一个请求处理器 */ constructor(request, response) { this.releaseQueues = []; this.forwardStacks = []; Object.defineProperty(this, requestSymbol, { value: request, enumerable: false }); Object.defineProperty(this, responseSymbol, { value: response, enumerable: false }); request.setServletContext(this); } /** * 添加一个资源销毁操作 * @param handler 当前销毁函数会在请求结束后执行(无论请求执行成功还是失败) */ addReleaseQueue(handler) { this.releaseQueues.push(handler); } /** * 执行资源释放队列 */ doReleaseQueues() { this.releaseQueues.forEach((handler) => { new Promise((resolve) => { handler(); resolve(); }); }); this.releaseQueues.length = 0; } } exports.default = ServletContext;