JS闭包异步获取数据并缓存
2019-02-12 18:53
344 查看
JS闭包缓存数据
设想我们需要向接口请求所需数据,又不想保存在全局变量中,并且会多次使用,那么我们就需要将请求的数据存储起来,当调用这个函数的时候,首先在缓存中查找,如果找不到,则调用
API,然后设置缓存并返回值,如果找到了,直接返回查找到的值即可。闭包正好可以做到这一点,因为它不会释放外部的引用,从而函数内部的值可以得以保留。 应用示例
const getList = (function() { let data = {}; const getData = () => { return new Promise((resolve, reject) => { let packageOptions = { url: '/your/api', params: { normal: 1 }, success: function (rsp) { data = rsp.data; resolve(); } }; ajax(packageOptions); }) } // 闭包存储data const result = async function (type) { if (JONS.stringify(data) === '{}') { await getData(); return data; } else { return data; } } return result; })(); // 第一次调用通过api请求数据 getList().then(res => { console.log(res); // 第二次调用则直接拿取缓存数据 getList().then(res => { console.log(res); } });
相关文章推荐
- js异步获取数据的问题
- ajax实现异步获取数据 (js创建ajax对象)
- Ajax异步获取html数据中包含js方法无效的解决方法
- Ajax异步获取html数据中包含js方法无效的解决方法
- ajax 异步获取数据实现代码 (js创建ajax对象)
- nodejs+express一个很经典的问题--异步获取数据模板渲染
- 解决在IE中获取数据的缓存问题,运行环境为node.js
- ajax异步获取数据后动态向表格中添加数据(行2) cheat-order.js
- 发送异步请求获取数据时,不使用客户端浏览器缓存
- javascript angularjs 使用promise 异步获取数据
- 解决在IE中获取数据的缓存问题,运行环境为node.js
- Ajax异步获取html数据中包含js方法无效的解决方法
- 如何获取node.js异步事件中的数据
- Ajax异步获取html数据中包含js方法无效的解决方法
- 实用JS小汇总--实现异步获取数据
- ajax 异步获取数据实现代码 (js创建ajax对象)
- Ajax异步获取html数据中包含js方法无效的解决方法
- Ajax异步获取html数据中包含js方法无效的解决方法
- JS 无刷新获取后台数据 异步 Ajax
- js从后台获取数据时,防止页面缓存问题,url后加时间戳