0

我正在尝试在构造函数中使用异步调用导出一个类:

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() 完成?

4

1 回答 1

1

如果你做类似的事情

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 只是 Promises 的糖,你可以像这样等待:

my.waitForMe.then(function() {
});
于 2016-11-30T09:20:48.957 回答