NodeJS Promise 和 Symbol.species 用法
NodeJS Promise and Symbol.species usage
我试图子类化标准 promise 对象,但我想要 then
到 return 标准 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());
我看到 chrome 可以正常工作:
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,它 可能 工作:
$ node --es-staging
> 'species' in Symbol
true
我会注意到您的特定示例在具有该标志的 Node v6.3.1 中确实有效。它只是尚未在 Node 中发布,并且在下一个主要版本升级之前不太可能出现在最新版本中。
我试图子类化标准 promise 对象,但我想要 then
到 return 标准 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());
我看到 chrome 可以正常工作:
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,它 可能 工作:
$ node --es-staging
> 'species' in Symbol
true
我会注意到您的特定示例在具有该标志的 Node v6.3.1 中确实有效。它只是尚未在 Node 中发布,并且在下一个主要版本升级之前不太可能出现在最新版本中。