我发现自己经常需要按摩令牌周期缓存数据,例如,map / reduce函数或深度嵌套的访问器。为此,设置一个digest回调函数,在digest循环之前/之后清除缓存值将非常有用。是否有一种“angular方式”来实现这一点?
我发现自己经常需要按摩令牌周期缓存数据,例如,map / reduce函数或深度嵌套的访问器。为此,设置一个digest回调函数,在digest循环之前/之后清除缓存值将非常有用。是否有一种“angular方式”来实现这一点?
您可以通过 $rootScope.$watch
来实现一个没有“监听器”的函数(只需使用一个并不返回任何内容的函数来调用它)。这有效地使您能够通过提供的函数在 digest 发生时得到通知。
$rootScope.$watch(function() {
// a digest is happening.
});
$cacheFactory
创建缓存并返回它,但会跟踪该状态并在适当时间进行清除。watch
语句。这是因为我无法控制监视的顺序,以确保由我的服务添加的监视是最后一个。
然而,如果我们查看$rootScope
的源代码,就会看到一个未记录的内部函数$$postDigest
,它将一些函数添加到队列中,在摘要完成时处理该队列。所以,我可以使用相同的技术,但是使用$$postDigest
延迟清理,如这个示例所示。它可以工作,但我们正在使用内部API玩弄火,自行承担风险。