我们在项目中经常会遇见一个请求结果多次使用的情况,一般如果请求次数不多,可以不做处理,例如登录就直接再次请求就可以了,但是如果服务器做了约束或者为了更好的性能,可以利用浏览器的强缓存机制,进行请求结果的缓存,缓存之后当再次发出请求时,直接从缓存中拿结果而不是再次请求!
直接上代码!
const lazyFn = (fn) => {
const map = {}
return async function() {
const key = JSON.stringify(arguments)
console.log(key, map)
let cache = map[key]
if (!cache) {
cache = await fn.apply(this, arguments)
// eslint-disable-next-line require-atomic-updates
map[key] = cache
}
return Promise.resolve(cache)
}
}
如何使用,直接,将请求的方法放入lazyFn()中,就可以了.
例如我做一个登录缓存
export const userLoginLazy = lazyFn(userLogin)
export function userLogin(data) {
return request({
url: '/login',
method: 'post',
data
})
}
这段代码主要达到一个优化性能的目的!!!
希望对小伙伴们有用!!!