我试图将来自服务器的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/

10-15 07:18