NodeJS承诺和Symbol.species使用
问题描述:
我试图继承标准承诺对象,但我想then
返回一个标准承诺对象,而不是我的子类。NodeJS承诺和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工作?任何想法如何解决这个问题?
答
在撰写本文时,Node还不支持Symbol.species
。
> 'species' in Symbol
false
它目前是在V6.x中的标志(--harmony-species
或--es-staging
)后面因此,它可以工作如果你开始节点是这样的:
$ node --es-staging
> 'species' in Symbol
true
我会注意到你的具体的例子做工作节点v6.3.1与标志。它还没有在Node中出货,并且在下一个主要版本出现之前不会在最新版本中出现。