我有一个ifort test.f90
函数执行调用以获取某些事件的ID:
refreshdata()
function refreshdata()
{
$http({
url: “…/GetIDs”,
method: "POST",
data: jsonData,
dataType: "json",
timeout: 7000,
contentType: 'application/json; charset=utf-8'
}).success(function(data, status, headers, config) {
responseNew=data.d;
meetings = JSON.parse(responseNew);
console.log("Got meetings");
meetingsanddetails(meetings);
}).error(function(data, status, headers, config) {
alert("Unable to refresh data.”);
});
}
类似于:
meetings
接下来,我做{
"Result":"success",
"Key":"12345",
"Data":[
{"ID":"GFDCV34","lastChangedDate":"2015-12-03 11:14:27"},
{"ID":"IDJHE23","lastChangedDate":"2015-12-03 15:17:47"},
{"ID":"KDJBD34","lastChangedDate":"2015-12-03 05:25:11"}
]
}
:
meetingsanddetails(meetings)
res = meetings;
var i = 0;
var tmp = [];
promises = [];
res.Data.map(function (val) {
promises.push(getdetails2(val.ID).then(function (data) {
tmp = JSON.parse(data);
Object.keys(tmp.Data[0]).map(function (v, j) {
val[v] = tmp.Data[0][v];
});
}, function (error) {
console.log(error)
}));
});
$q.all(promises).then(function () {
$timeout(function () {$ionicLoading.hide()}, 500);
$window.localStorage['data'] = JSON.stringify(res);
});
现在就像:
res
(归功于maurycy)
(信息:{
"Result": "success",
"Key": "12345",
"Data":[
{
"ID": "GFDCV34",
"name": "Name of event 1",
"date": "date of event 1",
"location": "location of event 1",
"lastChangedDate": "2015-12-03 11:14:27"
},
{
"ID": "IDJHE23",
"name": "Name of event 2",
"date": "date of event 2",
"location": "location of event 2",
"lastChangedDate": "2015-12-03 15:17:47"
},
{
"ID": "KDJBD34",
"name": "Name of event 3",
"date": "date of event 3",
"location": "location of event 3",
"lastChangedDate":"2015-12-03 05:25:11"
}
]
}
返回具有给定ID的事件的详细信息。)
这很好用,但getdetails2(id)
调用需要很长时间才能加载。这是我想让它像这样工作的方式:
如果getdetails2
返回…/GetIDs
中尚未包含的ID,则应添加其详细信息。
只有新呼叫的$window.localStorage['data']
更新时,才应更新已…/GetIDs
中已$window.localStorage['data’]
返回的ID。
1}}中存在的ID,但新呼叫中不存在的ID应该被删除。
任何可以指引我正确方向的人?我一直搞乱这个阵列hocus pocus。
答案 0 :(得分:0)
首先,不要依赖localStorage
:在私有模式下does not work,所以你需要有一些后备来防止错误。
你想要实现的是一个缓存的东西。你有两种可能性:自己做这需要一些时间,可能会有一些错误(我做了几次而且根本没有乐趣)或使用现成的解决方案,例如:这个先进的angular-cache。它允许选择存储类型,可以与$http
/ $resource
本机一起使用,并允许使用缓存进行操作,例如删除缓存的响应(当您获得缓存时需要执行的操作)一个较新的时间戳)。它非常易于使用,只需查看文档和示例。