js同步http请求并加缓存的实现
导读:缓存实现...
缓存实现
背景:有时候接口返回的数据短期内是不会改变的 ,可以对http接口返回的数据加缓存 ,即减少了后端请求,又加快了前端性能 ,真是一举两得!
实现原理:用js的Object对象即可实现缓存 ,{} 表示一个js对象 ,对象属性名是唯一的可以作为缓存key,属性值就是缓存value
例如:
同步方案
方案一
ajax同步方案二
加控制变量
由于js引擎单线程 ,串形执行 ,根据状态判断即可 。isLoading由js引擎线程 ,ajax线程共同操作 ,为共享变量!js执行原理可见:https://blog.csdn.net/sdasadasds/article/details/125197852下面是伪代码
/**
* 查询数据
*/
function getData(){
if(!isLoading){
//不是数据加载中 ,则可以开始加载
isLoading=true
//http请求数据
ajax回调 cache.put(key,data); isLoading=false;
}else{
//数据加载中 ,则循环延时等待数据
setTimeout(getCacheData,100)
}
}
/**
* 从缓存中取数据
*/
function getCacheData(){
let that = this
if(!isLoading){
//不是加载中,即数据加载完毕 ,从缓存中取数据
let data = cache.get(key)
return data
}else{
//还在加载中 ,延时递归获取
setTimeout(that.getCacheData, 100)
}
}
声明:本站所有文章,如无特殊说明或标注 ,均为本站原创发布 。任何个人或组织 ,在未征得本站同意时,禁止复制 、盗用 、采集、发布本站内容到任何网站 、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益 ,可联系我们进行处理 。
创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!