【发布时间】:2018-06-15 00:00:36
【问题描述】:
我正在尝试创建一个延迟承诺构造函数,如下所示:
class DeferredPromise extends Promise {
constructor() {
super((resolve, reject) => {
this.resolve = resolve
this.reject = reject
})
}
}
但是,当我尝试使用 new DeferredPromise() 时,我在 Firefox 60.0.01 中收到以下错误
ReferenceError: must call super constructor before using |this| in arrow function in derived class constructor
为什么会出现此错误,我该如何解决?另外,如果有更好的解决方案,请告诉我。
【问题讨论】:
-
必须在引用
this之前调用super。也不清楚你为什么不只使用Promise.resolve(something)或Promise.reject(someError)。 -
仅供参考,如果您只是在寻找一个简单的延迟对象实现,那么这里已经有几个堆栈溢出了。这是一个:Deferred implementation.
标签: javascript class ecmascript-6 arrow-functions