在装饰器中执行异步执行的良好模式

时间:2018-01-11 10:26:31

标签: javascript node.js decorator

我有一个设置数据库的装饰器功能。但是,由于装饰器不能同步,因此效果不佳。

export default function databaseDecorator (options) {
  const db = new Database({
    url: options.url
  });

  function checkDatabase () {
    // promisified functions that make sure DB exists
  }

  async function checkCollection () {
    // checks that DB collection exists
  }

  checkCollection()
  checkDatabase()

  return (target) => {
    /* does decorator business here */

    return target
  }
}

在装饰目标并返回目标之前,我可以使用哪种模式来确保check*函数完成?谢谢。

编辑:解决方案不需要在装饰器本身。如果通过在其他地方初始化db来获得更好的解决方案,那就没问题。

0 个答案:

没有答案