gpt4 book ai didi

javascript - 有什么方法可以获取 Angular $cacheFactory 中的所有键吗?

转载 作者:行者123 更新时间:2023-11-30 12:22:17 26 4
gpt4 key购买 nike

我知道在 npm/bower 上还有另一个名为 angular-cache 的库。但是添加一个新库是我工作的一个过程。所以我想使用 $cacheFactory 或核心 Javascript 函数来解决这个问题。

我在 stackoverflow 中看到很多关于获取 hasmap 的所有键的响应,所以我尝试了这个:

var keys = [];
for(var key in parameterCache) {
keys.push(key);
console.log(key);
}

控制台上的输出很奇怪。它们是 $cacheFactory 中的函数名称(删除、销毁、信息等)

最佳答案

没有内置的方式列出 $cacheFactory 中的所有键实例并且有no plans to include this to the core library ,因此您将不得不使用替代品,例如 angular-cache库或自己添加这些方法。我需要将此功能添加到我的 $http 缓存中,但我找不到干净利落的方法(使用装饰器或其他东西),所以我不得不求助于在我的 .run() 中对其进行猴子修补。 block :

// create a new $cacheFactory instance 
var httpWithKeysCacheFactory = $cacheFactory('$httpWithKeys'),
// save the original put() method
originalPut = httpWithKeysCacheFactory.put;
// add a property to hold cache keys
httpWithKeysCacheFactory.keys = [];
// overwrite put() with a custom method
httpWithKeysCacheFactory.put = function (key, value) {
// call original put() and save the key
if (originalPut(key, value)) {
this.keys.push(key);
}
};
// tell $http to use your monkey-patched cache factory
$http.defaults.cache = httpWithKeysCacheFactory;

这样做让我可以像这样从 Controller 访问我的缓存键:

$cacheFactory.get('$httpWithKeys').keys;

注意:这是一种非常幼稚的方法,它不检查键重复项,也不修改 remove()removeAll()从缓存中删除条目时更新 key 的方法。

关于javascript - 有什么方法可以获取 Angular $cacheFactory 中的所有键吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30619154/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com