/ / überprüfe TimeStamp für LocalStorage-Datensatz - Javascript, Abfrage, lokaler Speicher

TimeStamp auf LocalStorage-Datensatz prüfen - Javascript, Jquery, Local-Storage

Ich habe eine Div mit dynamischem Inhalt:

<div id="news">test</div>

Sie möchten den Inhalt für 50 Sekunden zu LocalStorage hinzufügen, um neue Anforderungen an den Server zu verhindern. Wenn er älter als 50 Sekunden ist, entfernen Sie ihn und legen Sie einen neuen Inhalt fest. Meine jQuery ist:

 $(function(){
function now() {return+new Date}
var db = window.db = {
get  : function(key) {
var entry = JSON.parse(localStorage.getItem(key)||"0");
if (!entry) return null;
if (entry.ttl && entry.ttl + entry.now < now()) {
localStorage.removeItem(key);
return null;
}
return entry.value;
},
set : function( key, value, ttl ) {
localStorage.setItem( key, JSON.stringify({
ttl   : ttl || 0,
now   : now(),
value : value
}) );
}
};
});

$(function() {
// Set Value with TTL of 50 Seconds using Milliseconds.
db.set( "homeNews", $("#news").html(), 50000 );
});

$(function() {
var contentsOfNews = db.get("homeNews");
$("#news").html(contentsOfNews);
});

Das Problem ist: Der Inhalt wird bei jedem Laden zum LocalStorage hinzugefügt, der Zeitstempel sollte jedoch überprüft werden. Wenn der Inhalt länger als 50 Sekunden hinzugefügt wurde, werden diese LocalStorage-Daten neu geschrieben. Wenn weniger als 50 Sekunden als nur nichts tun. Danke für deine Hilfe.

Bitte zögern Sie nicht, die Geige zu bearbeiten: http://jsfiddle.net/KQmky/1/

Tausend Dank

Antworten:

1 für die Antwort № 1

Sie können die eingestellte Funktion überprüfen, um festzustellen, ob der Wert vorhanden ist, und dort auch die ttl überprüfen

So etwas sollte genügen:

set : function( key, value, ttl ) {
var entry = JSON.parse(localStorage.getItem(key)||"0");

if (!entry || (entry.ttl && entry.ttl + entry.now < now())) {
//set the new value in local storage
}
}

Auf diese Weise wird der Eintrag überschrieben, wenn er nicht vorhanden ist