node-web-mvc
Version:
node spring mvc
55 lines (54 loc) • 1.64 kB
JavaScript
;
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;