正如问题所述。我可以这样做吗:
class MyClass {
async constructor(){
return new Promise()
}
}
原文由 wintercounter 发布,翻译遵循 CC BY-SA 4.0 许可协议
正如问题所述。我可以这样做吗:
class MyClass {
async constructor(){
return new Promise()
}
}
原文由 wintercounter 发布,翻译遵循 CC BY-SA 4.0 许可协议
扩展 Patrick Roberts 所说的,你不能做你要求的,但你可以做这样的事情:
class MyClass {
constructor() {
//static initialization
}
async initialize() {
await WhatEverYouWant();
}
static async create() {
const o = new MyClass();
await o.initialize();
return o;
}
}
然后在您的代码中创建您的对象,如下所示:
const obj = await MyClass.create();
原文由 Dave P. 发布,翻译遵循 CC BY-SA 3.0 许可协议
13 回答13k 阅读
7 回答2.2k 阅读
3 回答1.3k 阅读✓ 已解决
6 回答1.3k 阅读✓ 已解决
2 回答1.4k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
6 回答1.1k 阅读
不试图算命未来的决定,让我们专注于实用性和已知的东西。
ES7 和之前的 ES6 一样,会尝试成为语言的向后兼容扩展。考虑到这一点,向后兼容的构造函数本质上是一个常规函数(具有一些运行时限制),它意味着用
new
关键字调用。当发生这种情况时,函数的返回值得到特殊处理,具体来说,非对象返回值将被忽略并返回新分配的对象,而对象返回值按原样返回(新分配的对象被丢弃)。这样,您的代码将导致返回承诺,并且不会发生“对象构造”。我看不出这有什么实用性,我想如果有人花时间去寻找如何处理这样的代码,它就会被拒绝。