Jeśli chcesz to zrobić, myślę, że po prostu trzeba to zrobić ręcznie. Na przykład można zapisać znacznik czasu w gnieździe localStorage obok każdej przechowywanej wartości, a następnie sprawdzić sygnaturę czasową w stosunku do bieżącego czasu w regularnych odstępach czasu, takich jak ładowanie strony lub setTimeout lub coś podobnego.
przykład:
//this function sets the value, and marks the timestamp
function setNewVal(prop)
{
window.localStorage[prop] = Math.random();
window.localStorage[prop+"timestamp"] = new Date();
}
//this function checks to see which ones need refreshing
function someRucurringFunction()
{
//check each property in localStorage
for (var prop in window.localStorage)
{ //if the property name contains the string "timestamp"
if (prop.indexOf("timestamp") != -1)
{ //get date objects
var timestamp = new Date(window.localStorage[prop]);
var currentTime = new Date();
//currently set to 30 days, 12 hours, 1 min, 1s (don't set to 0!)
var maxAge = (1000 * 1) *//s
(60 * 1) *//m
(60 * 12) *//h
(24 * 30); //d
if ((currentTime - timestamp) > maxAge)
{//if the property is too old (yes, this really does work!)
//get the string of the real property (this prop - "timestamp")
var propString = prop.replace("timestamp","");
//send it to some function that sets a new value
setNewVal(propString);
}
}
}
}
//set the loop
window.setInterval(someRucurringFunction,(1000*60*60);
Edycja: Metoda mrtsherman byłby całkowicie działa również. Podobnie możesz wpisać znacznik czasu jako właściwość obiektu, który możesz przechowywać/pobierać za pomocą JSON.stringify/parse(). Jeśli zarówno tablica, jak i obiekt są bardzo duże lub masz ich bardzo wiele, prawdopodobnie sugerowałbym użycie metody właściwości równoległych dla wydajności.
Lubię to rozwiązanie jednak myślę, że należy zauważyć w tym konkretnym przykładzie, że wartości [1] musi być analizowany w obiekt Date przed jej porównywać. Podobnie jak ta nowa data (wartości [1]) – labago