2016-11-30 5 views
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(), мой. db по-прежнему пуст. Как подождать завершения init()?

ответ

1

Если вы что-то вроде

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

Зная, что асинхр/ждут только сахар для Promises, вы можете ждать, как:

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