Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/434.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript dependens()方法_Javascript_Meteor - Fatal编程技术网

Javascript dependens()方法

Javascript dependens()方法,javascript,meteor,Javascript,Meteor,我正在阅读《发现流星》这本书,我被137页的例子困住了 var _currentLikeCount = 0; var _currentLikeCountListeners = new Deps.Dependency(); currentLikeCount = function() { _currentLikeCountListeners.depend(); return currentLikeCount; } Meteor.setInterval(function() { var pos

我正在阅读《发现流星》这本书,我被137页的例子困住了

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()”和“dependent()”在这段代码中的作用。此代码中展示了什么类型的功能?这在书中或多或少被掩盖了,我很难找到一个解释,让我在文档中发送。

Meteor中的东西是反应性的——这意味着当数据中的某个值发生变化时,所有依赖该值的东西都会重新计算自己

要使这成为可能,这类事情必须知道它依赖于哪个值。这是通过设置依赖项来跟踪的。换句话说,如果你想让事情自动重新计算,依赖关系是你需要使用的低级机制

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

var _currentLikeCountListeners = new Deps.Dependency();
这将创建一个新的依赖项对象,用于跟踪
\u currentlikecoount
更改

_currentLikeCountListeners.depend();
此方法用于被动函数,使该函数侦听依赖项。因此,每当依赖项发生变化时,函数都将重新计算。请注意,并非所有函数都是反应式函数——它需要被称为“反应式计算”。开始时不要担心,只需注意模板帮助器是可以的

_currentLikeCountListeners.changed();
这是触发此重新计算的实际行