我有一个设置数据库的装饰器功能。但是,由于装饰器不能同步,因此效果不佳。
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来获得更好的解决方案,那就没问题。