1

在 Deps.Dependency.hasDependents 下的 Meteor 文档中,它说:

对于创建许多内部依赖项的反应性数据源,此函数可用于确定特定依赖项是否仍在跟踪任何依赖关系,或者是否可以清理它以节省内存。

有人可以提供一个使用 dependency.hasDependents() 清理内存的例子吗?

谢谢。

4

1 回答 1

2

你需要对依赖有一个很好的理解,所以我建议你仔细看看 Chris Mather 制作的这个教程:http ://www.eventedmind.com/posts/meteor-build-a-reactive-data-资源

在下面的简单示例中,您可以确保该值是否在依赖项(客户端代码)的某处使用。

var title = 'My Headline';
var titleDeps = new Deps.Dependency;

var setTitle = function(s) {
  title = s;
  titleDeps.changed();
};

Template.HelloWorld.getTitle = function() {
  Deps.depend(titleDeps);
  return title;
};

因此,在模板中的某处使用 {{getTitle}},您将获得从函数 Template.HelloWorld.getTitle 到 var titleDeps 的依赖关系。

所以例如将打印真实

Template.HelloWorld.rendered = function() {
    console.log(titleDeps.hasDependents());
}

通过删除 Deps.depend(titleDeps); 从 Template.HelloWorld.getTitle 你会看到 false。

在用例中,您可以检查已订阅的数据库集合或类似的东西,以便您可以取消设置数据以释放缓存。

于 2013-05-26T10:58:42.327 回答