我试图继承标准的promise对象,但我希望then
返回一个标准的promise对象而不是我的子类。
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错误吗?任何想法如何解决这个问题?
答案 0 :(得分:3)
在撰写本文时,Node尚不支持Symbol.species
。
> 'species' in Symbol
false
它目前位于v6.x中的标志(--harmony-species
或--es-staging
)后面。因此,如果您像这样启动Node,可能工作:
$ node --es-staging
> 'species' in Symbol
true
我会注意到你的特定示例在带有该标志的Node v6.3.1中有效。它尚未在Node中发布,并且在下一个主要版本发布之前不会出现在最新版本中。