构造函数中的异步函数
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() {
});
我正在尝试通过构造函数中的异步调用导出 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() {
});