【发布时间】:2017-06-15 16:57:47
【问题描述】:
我有以下代码。
class DB {
constructor(client) {
this.client = client;
}
}
export default function store() {
return new Promise((resolve, reject) => {
pg.connect(process.env.DATABASE_URL, client => {
client.query('CREATE TABLE x(name VARCHAR(100))');
return resolve(new DB(client));
});
});
}
有没有办法在类构造函数中移动 store 函数并使用 async/await 重写它?
【问题讨论】:
-
您是否已经尝试过?请向我们展示您的代码。我们可以从那开始讨论...
-
我不认为这是可能的;构造函数本质上是同步的,所以你不能在构造函数内部进行异步操作(至少不能正确)。
-
同意@Frxstrem。通常构造函数应该返回你的新实例。您可以将 store 函数添加到您的类并在构造函数中触发它(将 promise 分配给实例属性)。
-
async关键字返回一个 Promise,因此它与使用 Promise 没有什么不同,只是您使用await获得了一个不错的语法糖 -
您要解决的问题是什么?
标签: javascript async-await ecmascript-2017