2016-08-03 7 views
0

標準の約束オブジェクトをサブクラス化しようとしましたが、thenは私のサブクラスではない標準の約束オブジェクトを返すようにします。NodeJS PromiseとSymbol.speciesの使用

クロムと正常に動作します
class CustomPromise extends Promise 
{ 
    constructor(fn) 
    { 
     super(fn); 
    } 

    static get [Symbol.species]() 
    { 
     console.log("get Symbol.species"); 
     return Promise; 
    } 

    toString() 
    { 
     return "CustomPromise"; 
    } 
} 

var p = new CustomPromise((resolve) => resolve(5)).then(v => console.log(v)); 
console.log(p.toString()); 

私は見た:

test4.js:12 get Symbol.species 
test4.js:25 [object Promise] 

しかしNodeJS

node ~/Documents/test4.js 
CustomPromise 

で動作するように思われませんが、これはNodeJSのバグですか?どのようにこの問題を回避するにはどのようなアイデアですか?

答えて

3

現在、ノードはSymbol.speciesをサポートしていません。

> 'species' in Symbol 
false 

はv6.x.内のフラグ(--harmony-species又は--es-staging)の後ろに現在だから、仕事は、あなたは、このようにノードを起動する可能性がある場合:

$ node --es-staging 
> 'species' in Symbol 
true 

私はあなたの特定の例は、そのフラグをノードV6.3.1で作業を行うことに注意しましょう。これはNodeにまだ出荷されていないだけで、次のメジャーバージョンバンプまでは最新バージョンではないようです。

関連する問題