最近在用node.js写一个小工具,他会去call某个api,然而似乎他那边有限制一定时间内
最多call几次,因此我自己写了个简单的cache(附一)。
可是发现当有多个人在差不多的时间连进来的时候,我还是会call很多次,因为前面call
的东西还没有存进cache里面(每call一次api约花费一秒),导致后来的人因为次数的上
限拿不到资料,想问有办法让我做到先注册一下我要放东西到cache,之后一拿到再分给
每个需要的人吗?
*附一
const MyCache = function() {
let dataStore = {}, CACHED_TIME = 600000;
return {
setCacheTime: function(time) {
CACHED_TIME = time;
},
check: function(key) {
if(typeof dataStore[key] === 'undefined') return false;
const curTime = new Date();
if(curTime - dataStore[key].updTime >= CACHED_TIME) {
delete dataStore[key];
return false;
}
return true;
},
get: function(key) {
return dataStore[key].value;
},
update: function(key, data) {
const curTime = new Date();
dataStore[key] = { 'updTime': curTime, 'value': data };
}
}
}
p.s. 不知道原生的Proxy可不可以做到setcahcetime之类的效果QQ