嗨所以我正在尝试构建一个缓存系统
这种方式的工作方式是,当用户点击它在该选项卡的json中加载的选项卡时 - 除了用户在选项卡上多次单击并且多次获取json之外,一切都正常工作 - 不是理想
所以我的想法是构建一个缓存,以便在第一次点击一个标签后,json被添加到缓存中并在下次从那里调用。
问题实际上是初始化缓存数组的位置,以便函数可以添加它。
显然我现在拥有它将意味着它在尝试调用getData函数时未定义。有人可以帮忙吗?这是代码
$(function() {
var cache = {};
$(".nav-tabs li a").on("click", function(){
var tabID = $(this).attr("href");
getData(tabID, applicationID);
});
});
function getData(tabID, applicationID){
tab = tabID.replace('#', '');
var promise = this.cache[tab];
if (!promise) {
promise = getJSON(tab, applicationID);
this.cache[name] = promise;
}
$.when(promise).then(function(result) {
//do something!
});
function getJSON (name, applicationID) {
var promise = $.ajax({
url: 'data/' + name + '.json',
method: 'get',
dataType: 'json',
data: {appID:applicationID}
});
return promise;
}
答案 0 :(得分:1)
一种方法是将cache
声明为全局变量。
另一种方法是将getData
和getJSON
的定义放在$(function() {...});
内,这样它们就会与cache
处于同一范围内。