On Fri, Jul 20, 2018 at 12:15 PM Augusto Moura <augusto.borg...@gmail.com>
wrote:

> Interesting enough, I got a really weird case (reads contraintuitive, I'm
> pretty sure the semantics of the error are right) extending the Promise
> class to exemplify a simple Deferred implementation, the code:
>
> ``` js
> class Deferred extends Promise {
>   constructor(factory) {
>     super((resolve, reject) => {
>       Object.assign(this, { reject, resolve });
>       factory(resolve, reject);
>     });
>   }
> }
>
> const d = new Deferred(() => {});
> ```
> The problem is the usage of `this` before calling the super constructor
> (even when the using in the super call itself).
>

Isn't the solution the pattern we've already seen?
```js
class Deferred extends Promise {
  constructor(factory) {
    const methods = {};
    super((resolve, reject) => Object.assign(methods, { resolve, reject }));
    Object.assign(this, methods);
    factory(this.resolve, this.reject);
  }
}
```
_______________________________________________
es-discuss mailing list
es-discuss@mozilla.org
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to