首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >流星.depends()方法

流星.depends()方法
EN

Stack Overflow用户
提问于 2014-06-28 23:50:53
回答 1查看 347关注 0票数 1

我正在研究“探索流星”这本书,我被困在137页的例子中

代码语言:javascript
复制
var _currentLikeCount = 0;
var _currentLikeCountListeners = new Deps.Dependency();


currentLikeCount = function() {
_currentLikeCountListeners.depend();
return currentLikeCount;
}

Meteor.setInterval(function() {
 var postId;
  if (Meteor.user() && postId = Session.get('currentPostId')) {
   getFacebookLikeCount(Meteor.user(), Posts.find(postId),
    function(err, count) {
  if (!err && count !== _currentLikeCount) {
   _currentLikeCount = count;
   _currentLikeCountListeners.changed();
 }
});
}
}, 5 * 1000);

我很难理解"Deps.Dependency()“和”依赖()“在这段代码中所做的事情。在这段代码中显示了什么类型的功能?这本书或多或少地掩盖了这一点,我很难找到一种能让文档发送的解释。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-06-29 02:20:14

Meteor中的事物是反应性的--这意味着当数据中的值发生变化时,所有依赖于该值的事物都会自己重新计算。

要使这成为可能,这类事情必须知道它所依赖的价值。这是通过设置依赖项来跟踪的。因此,换句话说,如果要使事物自动重新计算,则需要使用依赖关系机制。

在您发布的代码中有三行重要代码:

代码语言:javascript
复制
var _currentLikeCountListeners = new Deps.Dependency();

这将创建一个新的依赖对象,用于跟踪_currentLikeCount更改。

代码语言:javascript
复制
_currentLikeCountListeners.depend();

此方法用于响应函数,使该函数侦听依赖项。因此,每当依赖项发生变化时,将重新计算函数。请注意,并非所有函数都是反应性函数--它需要所谓的“反应性计算”。不要在一开始就担心它,只要注意模板帮助是可以的。

代码语言:javascript
复制
_currentLikeCountListeners.changed();

这是触发此重新计算的实际行。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24471957

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档