我在localStorage中有一个对象数组,而get
有一个来自$http get
调用的数组。我使用此代码替换来自localStorage
$http get
数组中的部分
var arr = res;
minorObject.forEach(function (arr, i) {
console.log('above if', arr);
if (minorObject[i].id === arr.id) {
arr[i] = minorObject[i];
console.log('arr after:', arr);
}
});
这一切都在.then()
中,但var arr = res;
始终保持与最初设置的值相同。我无法理解arr
变量是如何更新的。 console.log('arr after:', arr);
具有正确的值,但是一旦退出循环,arr
将恢复原状。这是函数
function loadList() {
$localForage.getItem('minorArray').then(function (res) {
if (res === null) {
minorResource.getAll().then(function (res) {
console.log('minorlist 35', res.minorWorks);
var minorSync = res.nextSyncDateTime;
$localForage.setItem('minorArray', res.minorWorks).then(function (arrRes) {
console.log('arrRes', arrRes);
minorList.minorArray = arrRes;
// set nextSync
$localForage.iterate(function (value, key) {
if (key === 'nextSync') {
return value;
}
}).then(function (res) {
// update minor works sync date
res.mwSync = minorSync;
$localForage.setItem('nextSync', res);
});
})
});
} else {
minorResource.getAll().then(function (res) {
var minorObject = res.minorWorks,
minorSync = res.nextSyncDateTime;
if (minorObject !== null) {
$localForage.iterate(function (value, key) {
if (key === 'minorArray') {
return value;
}
}).then(function (res) {
console.log('response from then promise:', res);
var arr = res;
minorObject.forEach(function (arr, i) {
console.log('above if', arr);
if (minorObject[i].id === arr.id) {
arr[i] = minorObject[i];
console.log('match');
console.log('arr after:', arr);
}
});
// return $localForage.setItem('minorArray', arr).then(function (res) {
// minorList.minorArray = res;
// });
});