我试图将来自服务器的JSON AJAX响应存储在浏览器localStorage
中一分钟,并通过new Date().getMinutes()
添加时间戳。
在$(document).ready
上,我尝试将localStorage中的时间戳与我在如下变量中设置的当前时间戳进行比较:new Date().getMinutes().toString()
,如果当前时间戳大于localStorage中的时间戳,则我再次进行AJAX调用。
$(document).ready(function(){
var object = JSON.parse(localStorage.getItem("cache"));
if (object) {
var dateString = object.timestamp,
now = new Date().getMinutes().toString();
console.log('cache present. ' + object.timestamp + ' - checking against: ' + now + '');
if (now > dateString ) {
console.log('cache expired - refetching');
$.getJSON('cart/get', function(data) {
var object = {url: 'cart/get', response : data, timestamp: new Date().getMinutes()}
localStorage.setItem("cache", JSON.stringify(object));
});
}
return object.response;
} else {
console.log('cache not present - set it');
$.getJSON('cart/get', function(data) {
var object = {url: 'cart/get', response : data, timestamp: new Date().getMinutes()}
localStorage.setItem("cache", JSON.stringify(object));
});
}
});
这是可行的,但是如果用户在8:26:57加载页面,然后在8:27:06重新加载页面,即使还没有过去一分钟,也会发出AJAX请求。
我的问题是:如何在localStorage中设置确切的时间戳并将其与
new Date().getMinutes().toString()
进行比较,并且仅在至少60秒过去之后才发出AJAX请求? 最佳答案
您应该将.getTime()结果存储到本地存储中,然后将其与当前date.getTime()进行比较,它将以毫秒为单位提供结果,因此必须将其除以1000。
关于javascript - 比较javascript中的时间戳,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51546287/