localStorage 설정 만 료 시간
1785 단어 javaScript
Storage.prototype.setExpire=(key,value,expire) =>{
};
Storage.setExpire(key,value,expire);
기한 이 지나 면 반드시 시간 을 기록 해 야 합 니 다. 우리 의 생각 은 설정 이 가치 가 있 을 때 현재 시간 을 기록 한 다음 에 가치 가 있 을 때 현재 시간 과 이전의 시간 차 가 특정한 범위 안에 있 는 지 판단 하고 범 위 를 초과 하면 현재 항목 을 비우 고 null 로 돌아 가 는 것 입 니 다.
값 에 시간 을 넣 으 려 면 형식 을 정의 해 야 합 니 다.
Storage.prototype.setExpire=(key, value, expire) =>{
let obj={
data:value,
time:Date.now(),
expire:expire
};
localStorage.setItem(key,JSON.stringify(obj));
}
아래 세 필드 포함
data 실제 값 time 현재 시간 스탬프 expire 만 료 시간
localstorage 가 설정 한 값 을 대상 으로 할 수 없 기 때문에 JSON. stringify 방법 을 사용 하여 문자열 로 바 꾸 었 습 니 다. 마지막 으로 사용 할 때 되 돌려 야 합 니 다.
이어서 저희 가 얻 는 방법 을 추가 하 겠 습 니 다.
Storage.prototype.getExpire= key =>{
let val =localStorage.getItem(key);
if(!val){
return val;
}
val =JSON.parse(val);
if(Date.now()-val.time>val.expire){
localStorage.removeItem(key);
return null;
}
return val.data;
}
저희 가 먼저 테스트 를 해 볼 수 있어 요.
localStorage.setExpire("token",'xxxxxx',5000);
window.setInterval(()=>{
console.log(localStorage.getExpire("token"));
},1000)
본질 적 으로 우리 의 사 고 는 기한 이 지난 항목 을 정리 하 는 것 이 아니 라 얻 을 때 기한 이 지 났 는 지 판단 하고 기한 이 지나 면 다시 이 항목 을 제거 하 는 것 이다.