javascript 有没有一种方法可以用引用super的同一个方法扩展两个类?

yhxst69z  于 2023-03-21  发布在  Java
关注(0)|答案(1)|浏览(126)

我正在创建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? */
}
hpxqektj

hpxqektj1#

我正在创建NodeJS http.Agent的一个子类,以消除达到套接字限制时的排队行为
不要创建子类,只使用现有的类并传递适当的选项,特别是{maxTotalSockets: undefined}

相关问题