Непонятное поведение localStorage

177
08 мая 2019, 23:10

Пытаюсь сделать кеширование в localStorage, но что-то странное с ним происходит. По идее должен удалять все элементы кроме cacheBbbbbb cacheFfffff, но не удаляет некоторые. Хотя в списке (если раскомментировать listStorage();) выводит все элементы.

Но самое странное, если закомментировать строку localStorage.removeItem(key); то список элементов на удаление нормально выводит.

В чем хитрость?

localStorage.setItem("cacheAaaaaa", JSON.stringify({ l:2, t:123})); 
localStorage.setItem("cacheBbbbbb", JSON.stringify({ l:3, t:1543001789})); 
localStorage.setItem("cacheCccccc", JSON.stringify({ l:4, t:234})); 
localStorage.setItem("cacheDddddd", JSON.stringify({ l:5, t:345})); 
localStorage.setItem("cacheEeeeee", JSON.stringify({ l:6, t:456})); 
localStorage.setItem("cacheFfffff", JSON.stringify({ l:7, t:1543001789})); 
localStorage.setItem("cacheGggggg", JSON.stringify({ l:7, t:567})); 
 
maintenanceStorage(); 
//listStorage(); 
 
function maintenanceStorage() { 
  for (var n = 0; n < localStorage.length; n++) { 
    var key = localStorage.key(n); 
    if (key.substring(0, 5) == "cache") { 
      if ((Math.trunc(Date.now()/1000) - parseInt(JSON.parse(localStorage.getItem(key)).t)) > 172800) { 
        console.log("Item removed: " + key); 
        localStorage.removeItem(key); 
      } 
    } 
  } 
} 
 
function listStorage() { 
  for (var n = 0; n < localStorage.length; n++) { 
    console.log(localStorage.key(n)); 
    console.log(localStorage.getItem(localStorage.key(n))); 
  } 
}

Answer 1

Что происходит в цикле с localStorage.length, когда выполняется localStorage.removeItem(key);?

  ...
  localStorage.removeItem(key);
  n--;
}
READ ALSO
Как вывести текст форм и div&#39;ов в alert

Как вывести текст форм и div'ов в alert

Доброй ночи! Нужна ваша помощь! Например, у меня есть форма, которая состоит из: Имя, Фамилия, Электронная почта, выпадающий список и 8 div'ов...

215
Как называется/реализовать sroll эффект?

Как называется/реализовать sroll эффект?

На сайте есть header, внутри которого есть list с якорями на секцииНеобходимо менять их состояние (цвет текста, ну или что - то другое), при достижении...

174
как заставить node.js приложение ждать выполнения запроса к базе данных

как заставить node.js приложение ждать выполнения запроса к базе данных

Этот код возвращает массив до его заполнения, как поправить? var ar = ["12__1543020124769"];

179
Не могу вывести в поле значение выбранного пункта из списка

Не могу вывести в поле значение выбранного пункта из списка

По нажатию на любой из списка элемент, хочу чтоб значение нажатого элемента списка отображалось в блоке, в моем случае отображает underfiend, хочу...

200