0

我将一些从 ajax 返回的数据保存在 javascript 变量中。我想在一段时间后使这个变量失效,比如一小时。

我可以编写一些 setTimeout 函数来处理这个问题,但我只是觉得这不是最优的。

另一种方法是保存在 cookie 中并设置过期时间,但开销可能是不必要的。

还有其他方法可以更优雅地处理这种情况吗?

4

2 回答 2

3

假设实际变量确实存在那么长时间(页面保持打开状态),只需执行每个缓存所做的事情:保存时间戳并检查它。

var cache = { timestamp : null, data : null };

function setData(data) {
    cache.data      = data;
    cache.timestamp = new Date;
}

function getData(maxAge) {
    if (/* compare cache.timestamp to now - maxAge */) {
        return null;
    }
    return cache.data;
}
于 2013-08-06T09:10:16.363 回答
2

保留一个指示值何时到期的变量。

var foo = "bar";
var foo_expires_on = new Date(new Date().getTime() + 60 * 60 * 5); // +5 hours

deceze 的答案是更正式的(单子)实现。

于 2013-08-06T09:10:23.133 回答