async function getToday() { console.log('获取服务器时间') if (app.globalData.servertime) { return app.globalData.servertime; } else { let res = await wx.cloud.callFunction({name: 'getServerTime'}); app.globalData.servertime = res.result; return app.globalData.servertime; } }怎么给这个函数增加失效时间,超过10分钟后就会重新从服务器获取时间
时间: 2023-12-03 10:43:11 浏览: 71
获得服务器时间
你可以通过在函数中保存上一次获取时间的时间戳,然后在下一次获取时间时与当前时间戳比较,如果超过了设定的失效时间,就重新从服务器获取。具体实现可以参考下面的代码:
```
async function getToday() {
console.log('获取服务器时间');
const now = Date.now();
const cacheTime = app.globalData.servertimeTime || 0;
const cacheData = app.globalData.servertime || null;
if (cacheData && now - cacheTime < 10 * 60 * 1000) {
// 数据未过期,直接返回缓存数据
return cacheData;
} else {
// 数据已过期或首次获取,重新从服务器获取数据
const res = await wx.cloud.callFunction({name: 'getServerTime'});
app.globalData.servertime = res.result;
app.globalData.servertimeTime = now;
return app.globalData.servertime;
}
}
```
在上面的代码中,我们首先获取当前时间戳 `now`,然后获取缓存的时间戳 `cacheTime` 和缓存的数据 `cacheData`。如果缓存数据未过期,则直接返回缓存数据;否则,重新从服务器获取数据,并更新缓存时间戳和缓存数据。其中,失效时间设为 10 分钟,即 10 * 60 * 1000 毫秒。
阅读全文