Javascript dependens()方法
我正在阅读《发现流星》这本书,我被137页的例子困住了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
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();
这是触发此重新计算的实际行