我在index.ts中将我的代码安排在简单的行函数定义上,如:
Http示例
export const demoHttpApp = functions.https.onRequest(
(req, resp) => new DemoHttpClass(req, resp).run()
);
实时数据库示例
export const demoRtDb = functions.database.ref(DemoRtDbClass.PATH)
.onWrite(event => new DemoRtDbClass(event).run());
我们的想法是按类开发课程并在外面测试。
每个类构造函数都返回 this ,以便能够调用clas成员。
我想知道是否会产生内存泄漏或任何类型的故障。
由于工作是针对复杂的操作,我更喜欢使用对象的方法,并将它们与其余的调用隔离开来。
但我不想创建问题,或因错误而支付长冻结实例。
据我所知,当函数完成时,对对象的引用会丢失,并释放内存。我想知道我是否做对了。
谢谢!
答案 0 :(得分:0)
我看到的最大问题是,每次调用函数时,您都要创建对象的新实例。更好的模式是在函数外部初始化对象。当一个新实例旋转时,它将创建新对象,然后每次调用该函数时,它可以反复使用同一个对象,从长远来看,这将占用更少的内存。
var demoHttpApp = new DemoHttpClass();
export const demoHttpApp = functions.https.onRequest((req, res) =>
demoHttpApp.run(req, res);
);
另一个好处是你可以通过构造函数传递Firebase数据库或auth管理对象,这样也可以使这些对象更容易测试。
以下是注入admin数据库对象的示例:
var databaseClass = new DemoRtDbClass(admin.database());
export const demoRtDb = functions.database.ref(DemoRtDbClass.PATH).onWrite(event =>
databaseClass.run(event)
);