您的位置:首页 > Web前端 > JavaScript

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);
}
});
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: