我正在创建NodeJS http.Agent
的子类,以消除达到套接字限制时的排队行为。我已经覆盖了addRequest
来跟踪每个目标的并发请求数量,当没有可用容量来处理请求时拒绝请求。
问题是,我还需要扩展https.Agent
,它本身是http.Agent
的子类,具有相同的行为。如果我创建一个addRequest
函数并将其分配给每个代理的子类的原型,我无法引用super
。是否有一种合理的DRY方法来做到这一点?
下面的代码非常简单,但希望能说明问题。
class Original {
addRequest(req) {
console.log(req);
}
/* other stuff */
}
class ExtendedOriginal extends Original {
/* various extensions of other stuff */
}
/* Custom */
class ConcurrencyLimitedOriginal extends Original {
addRequest(req) {
if (this.canAddRequest(req)) {
super.addRequest(req); // super ref! Can only exist as a method, not a function
}
canAddRequest(req) {
/* various logic */
return true;
}
}
class ConcurrencyLimitedExtendedOriginal extends ExtendedOriginal {
/* DRY way to have same added logic as ConcurrencyLimitedOriginal? */
}
1条答案
按热度按时间hpxqektj1#
我正在创建NodeJS
http.Agent
的一个子类,以消除达到套接字限制时的排队行为不要创建子类,只使用现有的类并传递适当的选项,特别是
{maxTotalSockets: undefined}
。