2016-11-03 6 views
1

は、私は、これら二つの約束を延長しようとしています:拡張、ES6 Katasを通じて協力を約束

it('using `class X extends Promise{}` is possible', function() { 
    class MyPromise extends Promise { 
    constructor() 
    { 
     super(); 
    } 
    }; 
    const mypromise = new MyPromise((resolve) => resolve()); 

    promise 
    .then(() => done()) 
    .catch(e => done(new Error('Expected to resolve, but failed with: ' + e))); 
}); 

it('must call `super()` in the constructor if it wants to inherit/specialize the behavior', function() { 
    class ResolvingPromise extends Promise { 
    constructor() { 
    super(); 
    }} 

    return new ResolvingPromise((resolve) => resolve()); 
}); 

}); 

をして、このエラー受け付けております:

I "をコンストラクタの約束は '新しい' が必要ですが"それは私から何が欲しいのですか?

+2

のようです。 'constructor(... args){super(... args);}を使ってコンストラクタを宣言する必要があります。 } '。メッセージを取り除くことができるかどうかはわかりませんが、少なくともあなたは閉鎖を約束します。 – Mjh

+0

トランスキュレーターを使用していますか、実際のES6環境でこれを実行していますか? – Bergi

+0

動作を継承/特殊化したい場合は、コンストラクタで "super()'を呼び出す必要があります。 – kernowcode

答えて

2

これはあなたのコードは `(解決)=>解決()`引数親に `Promise`コンストラクタを渡しません答え

it('must call `super()` in the constructor if it wants to inherit/specialize the behavior', function() { 
     class ResolvingPromise extends Promise { 
     constructor(resolve) { 
      super(resolve); 
     } 
     } 

     return new ResolvingPromise((resolve) => resolve()); 
    }); 
関連する問題