1、场景描述:
第一次向后端发起请求得到数据后存储到sessionstorage或localstorage之中,之后的逻辑是每次需要数据时从sessionstorage或localstorage中去取,取不到的时候(比如关闭页面重新打开或者手动清除缓存)再重新向后端发起请求获取数据。但是这样会存在一个问题,即希望通过刷新页面向后端重新发起请求的时候因为sessionstorage或localstorage的数据仍然存在,所以不会向后端发起请求。
2、解决方案:
在刷新页面的时候使用window.onbeforeunload向sessionstorage或localstorage存入一个标记譬如reloadFlag作为判断是否是刷新的依据,页面刷新后从sessionstorage或localstorage中获取存储的标记,然后执行相应的回调向后端发起请求,完成之后将sessionstorage或localstorage中获取存储的标记删除即可。
// reLoadFlag.js
;(function(){
window.onbeforeunload = function(){
sessionStorage.setItem('reLoadFlag', 'true');
}
})();
// 需要判断的地方进行判断操作
if (sessionStorage.getItem('reLoadFlag') === 'true') {
// 执行其他的逻辑
// ...............
sessionStorage.removeItem('reLoadFlag');
}