构造函数中的异步函数

Asynchronous functions in constructor

我正在尝试通过构造函数中的异步调用导出 class:

my.js:

module.exports = class My extends Emitter {
  constructor () {
    super()
    this.db = Object.create(db)
    this.db.init(cfg)
  }
}

db.js:

module.exports = {
  async init (cfg) {
    nano = await auth(cfg.user, cfg.pass)
    db = nano.use(cfg.db)
  },
  async get (id) {
    ...
  }

let my = new My()之后,my.db还是空的。如何等待 init() 完成?

如果你这样做

module.exports = class My extends Emitter {
  constructor () {
    super()
    this.db = Object.create(db)
    this.waitForMe = this.db.init(cfg)
  }
}
let my = new My();

知道 async/await 只是 Promise 的糖分,你可以像这样等待:

my.waitForMe.then(function() {
});