基于lastChangedDate构造新数组

时间:2015-12-31 11:24:26

标签: javascript arrays angularjs

我有一个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。

任何可以指引我正确方向的人?我一直搞乱这个阵列hocus pocus。

1 个答案:

答案 0 :(得分:0)

首先,不要依赖localStorage:在私有模式下does not work,所以你需要有一些后备来防止错误。

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