gpt4 book ai didi

javascript - 根据lastChangedDate构造新数组

转载 作者:行者123 更新时间:2023-11-28 06:32:49 25 4
gpt4 key购买 nike

我有一个 refreshdata() 函数,它执行调用以获取某些事件的 ID:

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.”);
});
}

session 类似于:

{
"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( session ):

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 现在类似于:

{
"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"
}
]
}

(归功于maurycy)

(信息:getdetails2(id) 返回具有给定 ID 的事件的详细信息)。

这工作正常,但 getdetails2 调用需要很长时间才能加载。这就是我想让它像这样工作的方式:如果 …/GetIDs 返回 $window.localStorage['data'] 中尚未存在的 ID,则应添加它们及其详细信息。…/GetIDs 返回的 ID 已存在于 $window.localStorage['data'] 中,仅当 lastChangedDate 为新的电话是最近的。应删除 $window.localStorage['data'] 中存在但新调用中不存在的 ID。

谁能指出我正确的方向?我一直搞乱这个数组骗局。

最佳答案

首先,不要依赖 localStorage:在 Safari 的私有(private)模式下 does not work ,因此您需要有一些后备措施来防止错误。

你想要实现的是一个缓存的东西。你有两种可能性:自己做,这需要一些时间,并且可能会出现一些错误(我做了几次,一点也不好玩),或者使用现成的解决方案,例如这个先进的angular-cache 。它允许选择存储类型,可以与 $http/$resource 一起使用,并允许对缓存进行操作,例如删除缓存的响应(这就是您需要的)当您获得更新的时间戳时执行)。它非常容易使用,只需查看文档和示例即可。

关于javascript - 根据lastChangedDate构造新数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34545759/

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