在我的骨干应用程序的路由器中,我使用闭包来存储需要身份验证的视图实例。这个想法是,当应用程序首次加载时,如果需要身份验证,路由器将缓存当前视图请求,然后查询服务器以检查当前用户是否经过身份验证。验证请求完成后,存储在闭包中的视图将呈现。
使用Chrome的内存管理分析工具,我发现此设计模式会造成内存泄漏。什么是更好的设计模式来实现相同的功能而不会造成内存泄漏?
if (session && !app.session.is_authenticated()) {
//if view requires authentication and is not logged in, then listen for login events
(function(that, viewContent) {
that.listenTo(app.session, "authenticated", function() {
that.mainView.renderPageContent(viewContent);
});
})(this, viewContent);
} else {
this.mainView.renderPageContent(viewContent);
}