构造函数中的异步函数

时间:2016-11-30 08:54:55

标签: javascript async-await ecmascript-2017 koa2

我试图在构造函数中导出一个带异步调用的类:

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

1 个答案:

答案 0 :(得分: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() {
});