请求中常会遇见这样的情况:
适合结果不变且多次调用的函数或复杂的计算函数,如购物车计算
数据不变有不变的安全性,变有变的多适用性
import memoize from 'memoizee';
export default {
onShow(){
this.ls_request()
},
methods: {
ls_request(){
var funb = (async res=> {
let data=await this.$api.get("banner/banner_all_item")
return data.data;
})
//仅封装,会请求2次
// funb()
// funb()
//封装+缓存,只会请求一次,但缓存的请求结果如果是错误,后面使用也会不方便
//let b=_.memoize(funb) // lodash的memoize
//b().then(re=>{
// console.log("re1",re)
//})
//b().then(re=>{
// console.log("re2",re)
//})
/*
* 接口请求,你应考虑操作可能失败的可能性。缓存了被拒绝的Promise,
* 则所有将来的调用都将以同样的失败 Promise 被拒绝!而memoize库解决了这个问题,示例变为:
*/
let c=memoize(funb)
c().then(re=>{
console.log("re33",re)
})
c().then(re=>{
console.log("re44",re)
})
},
}
}
网友评论